0
点赞
收藏
分享

微信扫一扫

写SQL的套路

定义问题

转化问题

如要解决的问题是:查出每门课程成绩都大于80分学生的姓名,可以转化为:只要学生最小分数的课程大于80分,就是所有课程成绩都大于80分。

查询同名同姓学生名单并统计同名人数-->怎么算姓名相同?按姓名分组后人数大于等于2,因为同名的人数大于等于2,分析出这一点很重要

分解问题

如要解决的问题是:查询出两门课程以上不及格的学生姓名和其平均成绩

先分解题目:

1)[两门以上][不及格课程]限制条件

2)[同学的学号及其平均成绩],也就是每个学生的平均成绩,显示学号,平均成绩

分析过程:

第1步:得到每个学生的平均成绩,显示学号,平均成绩

第2步:再加上限制条件:

1)不及格课程

2)两门以上[不及格课程]:课程数目>2

使用以下套路

select 查询结果

from 从哪张表中查找数据

where 查询条件

group by 分组

having 对分组结果指定条件

order by 对查询结果排序

limit 从查询结果中取出指定行

sql执行顺序

(1)from

(2)on

(3)left/right join

(4)where

(5)group by(开始使用select中的别名,后面的语句中都可以使用)

(6)avg,sum,max,min,count

(8)select

(9)distinct

(10)order by

(11)limit




举报

相关推荐

0 条评论