ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

关于sql的随笔

2020-05-06 22:06:32  阅读:300  来源: 互联网

标签:查询 Thinking Question 学生 课程 关于 sql Answer 随笔


 

具体题目来源于:https://zhuanlan.zhihu.com/p/43289968

 

 

 

 

Question:

查询修过课程编号1、2的学生信息

 

Thinking:

为了查询出一个学生读了两门课程,直接and操作会报错,正确的思维导图应该是:

先查询出读了单门课程的学生表,然后进行合拼找出学生编号,在查询相关信息       (或者先选出1、2号课程的学生,然后分组筛选 count=2 的学生)

 

Answer:

 

 

 

 

 

 

Question:

查询所有成绩小于60的学生

 

Thinking:

1、 先查询小于60分的成绩表 ,建立成(s_id,count)

2、 再查询每个学生修过的课程数目,也建立成(s_id,count)

3、 内连接,选取出相同的数目(key=count)

Answer:

 

 

 

Question:

查询没有学满课程的学生信息

 

Thinking:

先建立联合表(left join on!),再分组筛选(having)

 

Answer:

 

 

 

 Question:

建立一个 (学生id 语文 数学 英语 平均成绩 )的表格,按照降序排列

 

Thinking:

case when…then…else…end可以用来逐个输出英语数学语文成绩

Answer:

 

 

 

 

 

Question:

查询与学号为1同学的相同课程

 

Thinking:

先查找出没有学习01、02、03课程的学生

再判断其余的学生是否跟目标同学修完相同的课程数目

 

Answer:

 

 

 

 

 Question:

计算每一门课程的最大值、最小值、平均值、及格率

 

Thinking:

用case when 输出每一门课程及格的学生数目,方便计算及格率

 

Answer:

 

 

 

 

 

Question:

计算每一门课程的在不同区间的学生个数

 

Thinking:

用case when来计数构造不同的区间

 

Answer:

 

 

 

 

 

【case  when 与sum或count结合可以用来计数】

 

 

 

 

 

【order by 可以用先升序再降序排列】

 

 

 

Question:

查询一个学生考的课程成绩相同的信息

 

Thinking:

1、 先筛选学习课程大于2门(包含2)的学生

2、 再筛选成绩相同的学生(因为这些学生分组后只有一个score)

 

Answer:

 

 

 

 

 

【floor向下取整  datediff计算 间隔天数】

 

 

 

 

【month() now()的用法】

筛选当天这个月份生日的学生

 

 

 

 

【concat连接 substring截取】

 

 

标签:查询,Thinking,Question,学生,课程,关于,sql,Answer,随笔
来源: https://www.cnblogs.com/xiaoxiaoxiaoma/p/12839214.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有