MySQL常用命令(八)--GROUP BY、HAVING、SE

2020-05-05  本文已影响0人  油条稀饭

Group by

作用:分组

HAVAING

作用:进行分组过滤,支持所有WHERE操作;WHERE在数据分组前进行过滤,HAVAING在数据分组后进行过滤;

mysql> SELECT * FROM student;
+------------+------+-----------+-------+
| studentNum | name | classroom | score |
+------------+------+-----------+-------+
| 1001       | 李菲 |         1 |    78 |
| 1002       | 王名 |         1 |    88 |
| 1003       | 赵琳 |         1 |    98 |
| 1004       | 杜悦 |         2 |    87 |
| 1005       | 周黎 |         2 |    55 |
| 1006       | 齐飞 |         3 |    89 |
| 1007       | 孙敏 |         3 |    87 |
| 1008       | 周克 |         4 |    97 |
+------------+------+-----------+-------+
8 rows in set (0.00 sec)

mysql> SELECT classroom ,AVG(score) AS avg_score FROM  student GROUP BY classroom;
+-----------+-----------+
| classroom | avg_score |
+-----------+-----------+
|         1 |   88.0000 |
|         2 |   71.0000 |
|         3 |   88.0000 |
|         4 |   97.0000 |
+-----------+-----------+
4 rows in set (0.00 sec)

mysql> SELECT classroom ,AVG(score) AS avg_score FROM  student GROUP BY classroom HAVING avg_score>80;
+-----------+-----------+
| classroom | avg_score |
+-----------+-----------+
|         1 |   88.0000 |
|         3 |   88.0000 |
|         4 |   97.0000 |
+-----------+-----------+
3 rows in set (0.00 sec)

mysql> SELECT classroom ,AVG(score) AS avg_score ,MAX(score) AS max_score,MIN(score) AS min_score FROM  student GROUP BY classroom;
+-----------+-----------+-----------+-----------+
| classroom | avg_score | max_score | min_score |
+-----------+-----------+-----------+-----------+
|         1 |   88.0000 |        98 |        78 |
|         2 |   71.0000 |        87 |        55 |
|         3 |   88.0000 |        89 |        87 |
|         4 |   97.0000 |        97 |        97 |
+-----------+-----------+-----------+-----------+
4 rows in set (0.00 sec)

mysql> SELECT classroom ,AVG(score) AS avg_score ,MAX(score) AS max_score,MIN(score) AS min_score FROM  student GROUP BY classroom HAVING classroom = 1;
+-----------+-----------+-----------+-----------+
| classroom | avg_score | max_score | min_score |
+-----------+-----------+-----------+-----------+
|         1 |   88.0000 |        98 |        78 |
+-----------+-----------+-----------+-----------+
1 row in set (0.00 sec)

SELECT 子句的执行顺序

子句 说明 是否必须执行
SELECT 要返回的列表或表达式
FROM 从中检索数据的表 仅在从表选择数据时使用
WHERE 行级过滤
GROUP BY 分组说明 仅在按组计算聚集时使用
HAVING 组级过滤
ORDER BY 输出排序顺序
LIMIT 要检索的行数
上一篇下一篇

猜你喜欢

热点阅读