having用法

having的用法
having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。而 having子句在聚合后对组记录进行筛选。

例如:
有这么一个面试题:
请写出一条SQL满足一下查询需求(表名:score)
1)筛选出不及格科目的个数大于1的学生
2)同时计算该学生不及格科目的平均分
3)不使用子查询
+—-+——–+———+——-+
| id | name | subject | score |
+—-+——–+———+——-+
| 1 | 张三 | 数学 | 80 |
| 2 | 张三 | 语文 | 53 |
| 3 | 张三 | 英语 | 59 |
| 4 | 李四 | 数学 | 55 |
| 5 | 李四 | 语文 | 56 |
| 6 | 李四 | 语文 | 50 |
| 7 | 王五 | 数学 | 100 |
| 8 | 王五 | 语文 | 90 |
+—-+——–+———+——-+

select name,count(1) as cnt,avg(score) avg from score where score < 60 group by name having cnt > 1;

+——–+—–+———+
| name | cnt | avg |
+——–+—–+———+
| 张三 | 2 | 56.0000 |
| 李四 | 3 | 53.6667 |
+——–+—–+———+

此条目发表在 mysql 分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>