数据库
首页 > 数据库> > 关于sql的随笔

关于sql的随笔

作者:互联网

 

具体题目来源于: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