版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lihaogn/article/details/82215506
1 排序
使用 order by 子句
mysql> select * from tb1;
+----+--------------+----------+------------+
| id | title | author | date |
+----+--------------+----------+------------+
| 1 | 学习mysql | lihaogn | 2018-07-13 |
| 2 | 学习java | zhangsan | 2018-06-30 |
| 3 | 学习scala | wanger | NULL |
| 4 | 学习python | caliu | 2018-08-29 |
| 5 | 学习spark | wusan | 2018-08-29 |
| 6 | 学习hadoop | gaowu | 2018-08-29 |
+----+--------------+----------+------------+
6 rows in set (0.00 sec)
// 按日期升序排列
mysql> select * from tb1 order by date ASC;
+----+--------------+----------+------------+
| id | title | author | date |
+----+--------------+----------+------------+
| 3 | 学习scala | wanger | NULL |
| 2 | 学习java | zhangsan | 2018-06-30 |
| 1 | 学习mysql | lihaogn | 2018-07-13 |
| 4 | 学习python | caliu | 2018-08-29 |
| 5 | 学习spark | wusan | 2018-08-29 |
| 6 | 学习hadoop | gaowu | 2018-08-29 |
+----+--------------+----------+------------+
6 rows in set (0.00 sec)
// 按日期降序排列
mysql> select * from tb1 order by date DESC;
+----+--------------+----------+------------+
| id | title | author | date |
+----+--------------+----------+------------+
| 4 | 学习python | caliu | 2018-08-29 |
| 5 | 学习spark | wusan | 2018-08-29 |
| 6 | 学习hadoop | gaowu | 2018-08-29 |
| 1 | 学习mysql | lihaogn | 2018-07-13 |
| 2 | 学习java | zhangsan | 2018-06-30 |
| 3 | 学习scala | wanger | NULL |
+----+--------------+----------+------------+
6 rows in set (0.00 sec)
2 分组
使用 group by 子句
// 按title进行分组,并统计每个title有多少记录
mysql> SELECT title, COUNT(*) FROM tb1 GROUP BY title;
+--------------+----------+
| title | COUNT(*) |
+--------------+----------+
| 学习hadoop | 1 |
| 学习java | 1 |
| 学习mysql | 1 |
| 学习python | 1 |
| 学习scala | 1 |
| 学习spark | 1 |
+--------------+----------+
6 rows in set (0.00 sec)
mysql> select * from employee_tbl;
+----+--------+---------------------+--------+
| id | name | date | singin |
+----+--------+---------------------+--------+
| 1 | 小明 | 2016-04-22 15:25:33 | 1 |
| 2 | 小王 | 2016-04-20 15:25:47 | 3 |
| 3 | 小丽 | 2016-04-19 15:26:02 | 2 |
| 4 | 小王 | 2016-04-07 15:26:14 | 4 |
| 5 | 小明 | 2016-04-11 15:26:40 | 4 |
| 6 | 小明 | 2016-04-04 15:26:54 | 2 |
+----+--------+---------------------+--------+
6 rows in set (0.00 sec)
mysql> SELECT name,SUM(singin) AS login_count FROM employee_tbl GROUP BY name;
+--------+-------------+
| name | login_count |
+--------+-------------+
| 小丽 | 2 |
| 小明 | 7 |
| 小王 | 7 |
+--------+-------------+
3 rows in set (0.00 sec)
// WITH ROLLUP:可以实现在分组统计基础上再进行相同的统计。
mysql> SELECT name,SUM(singin) AS login_count FROM employee_tbl GROUP BY name WITH ROLLUP;
+--------+-------------+
| name | login_count |
+--------+-------------+
| 小丽 | 2 |
| 小明 | 7 |
| 小王 | 7 |
| NULL | 16 |
+--------+-------------+
4 rows in set (0.01 sec)
// 用coalesce来取代NULL的名称
// select coalesce(a,b,c);
// if a==null then b; if b==null then c; if a=b=c==null then null
mysql> SELECT coalesce(name,'总数'),SUM(singin) as login_count FROM employee_tbl GROUP BY name WITH ROLLUP;
+-------------------------+-------------+
| coalesce(name,'总数') | login_count |
+-------------------------+-------------+
| 小丽 | 2 |
| 小明 | 7 |
| 小王 | 7 |
| 总数 | 16 |
+-------------------------+-------------+
4 rows in set (0.00 sec)