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
字段進行求平均數