mysql:group by,order by mysql:group by,order by

mysql:group by,order by

order by

order by是用于支持字段的关键字

表结构如下

select * from table_a;
+----------+-------+
| name     | score |
+----------+-------+
| zhangsan |    10 |
| lisi     |    70 |
| wangwu   |    70 |
| zhangsan |    50 |
+----------+-------+

默认生序

select * from table_a order by score;
+----------+-------+
| name     | score |
+----------+-------+
| zhangsan |    10 |
| zhangsan |    50 |
| lisi     |    70 |
| wangwu   |    70 |
+----------+-------+

order by默认以升序进行排列

降序排列

select * from table_a order by score desc;
+----------+-------+
| name     | score |
+----------+-------+
| lisi     |    70 |
| wangwu   |    70 |
| zhangsan |    50 |
| zhangsan |    10 |
+----------+-------+

多重排序

select * from table_a order by score desc,name desc;
+----------+-------+
| name     | score |
+----------+-------+
| wangwu   |    70 |
| lisi     |    70 |
| zhangsan |    50 |
| zhangsan |    10 |
+----------+-------+

mysql对于多重排序的处理是从左到右,也就是说先根据条件1进行排序、出现了相同的情况再去执行条件2进行排序

group by

group by主要是对结果集进行分组,在这个基础上进行聚合运算

表结构如下

select * from table_a;
+----------+-------+
| name     | score |
+----------+-------+
| zhangsan |    10 |
| lisi     |    70 |
| wangwu   |    70 |
| zhangsan |    50 |
| wangwu   |    20 |
+----------+-------+

分组

select name from table_a group by name;
+----------+
| name     |
+----------+
| zhangsan |
| lisi     |
| wangwu   |
+----------+

在进行group进行分组时,只能显示用于分组的字段

聚合运算

count

select name,count(*) from table_a group by name;
+----------+----------+
| name     | count(*) |
+----------+----------+
| zhangsan |        2 |
| lisi     |        1 |
| wangwu   |        2 |
+----------+----------+

计算出每个分组的个数

sum

select name,sum(score) from table_a group by name;
+----------+------------+
| name     | sum(score) |
+----------+------------+
| zhangsan |         60 |
| lisi     |         70 |
| wangwu   |         90 |
+----------+------------+

对每个分组中数据的sum字段进行求和

avg

select name,avg(score) from table_a group by name;
+----------+------------+
| name     | avg(score) |
+----------+------------+
| zhangsan |    30.0000 |
| lisi     |    70.0000 |
| wangwu   |    45.0000 |
+----------+------------+

对每个分组中数据的avg字段进行求平均数

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章