题目
- 学生成绩单里两门成绩>80的学生名字
语句
SELECT S.name FROM Student S WHERE S.score > 80 GROUP BY S.name Having count(*)>=2;
解析
- 返回值是学生名字:
SELECT S.name
- 查询表是学生成绩单:
FROM Student S
- 成绩>80:
WHERE S.score > 80
- 从这些结果中选出有两门或两门以上的任意科目成绩的学生:
- 先用名字分组,后对分组后的内容进行筛选:
GROUP BY S.name Having count(*)>=2
- 先用名字分组,后对分组后的内容进行筛选:
having count(*)>i
-
没有分组的情况下having和Where 类似。
-
有分组的时候 Where 对分组前内容过滤,having是分组后的内容进行筛选。
-
having 里面可以写聚合函数,
-
示例:
select phone from aa group by phone having count(*) > 1
- 以phone分组,分组后,每组里面phone出现次数大于1的 phone 会显示出来。