MySQL 5种常用查询语句-group
2017-02-25 00:00
246 查看
摘要: group
group by 分组查询,一般配合统计函数来使用
max:求最大
min:求最小
sum:求总和
avg:求平均值
count:求总行数
数据库如下表所示
用法1:select max(列名) from 表名; 单条数据
用法2:select id,name,max(age),学号 from 表名; 多条数据查询,用逗号隔开,仅在MySQL 中使用,但无意义,应为数值没有对应。如果有意义,必须要加 group by
用法3:select max(列名) from 表名 group by 列名 #注意 group by 列名 (该列名必须是可以分组的列 )
如:取编号1,编号2这2组中,年龄最大的人,查询结果有几组,就有几行
注意:count 只能统计行数,无论 count() 中的内容是什么,如下图所示,如果要统计每个人的挂科的数量
错误写法:
正确写法:
with rollup
用来在分组统计数据的基础上再进行统计汇总,即用来得到group by的汇总信息
其中记录 NULL 表示所有人的登录次数。
我们可以使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:
group by 分组查询,一般配合统计函数来使用
max:求最大
min:求最小
sum:求总和
avg:求平均值
count:求总行数
数据库如下表所示
id | name | age | 学号 | 编号 |
---|---|---|---|---|
1 | lee | 10 | Null | 0 |
2 | 骚猪 | 33 | Null | 1 |
3 | 张鹏 | 22 | Null | 1 |
4 | 大表哥 | 12 | 00001 | 0 |
统计函数:
max 取最大值用法1:select max(列名) from 表名; 单条数据
select max(age) from msg;
用法2:select id,name,max(age),学号 from 表名; 多条数据查询,用逗号隔开,仅在MySQL 中使用,但无意义,应为数值没有对应。如果有意义,必须要加 group by
select id,name,max(age),学号 from msg;
用法3:select max(列名) from 表名 group by 列名 #注意 group by 列名 (该列名必须是可以分组的列 )
如:取编号1,编号2这2组中,年龄最大的人,查询结果有几组,就有几行
select id,max(age) from msg group by 编号;
sum 求总和
如,求4个人总年龄select sum(age) from msg;
min 求最小
avg 求平均值count 求总行数
如,求总人数(行数)select count(*) from msg;
注意:count 只能统计行数,无论 count() 中的内容是什么,如下图所示,如果要统计每个人的挂科的数量
错误写法:
select name,count(fs<60) from cj group by name; -- count(fs<60) 并不是统计 fs<60的 个数,它依然统计行数 -- 所以得到结果 /* +------+--------------+ | name | count(fs<60) | +------+--------------+ | 张三 | 3 | | 李四 | 2 | | 王五 | 1 | +------+--------------+ */
正确写法:
select name,sum(fs<60) from cj group by name; /* 1、fs <60 得到结果 为0 或1 2、求xx条件用sum ,不能用count +------+------------+ | name | sum(fs<60) | +------+------------+ | 张三 | 2 | | 李四 | 2 | | 王五 | 1 | +------+------------+ */
给列名加1个别名:as
select 编号 as分组 from msg;with rollup
用来在分组统计数据的基础上再进行统计汇总,即用来得到group by的汇总信息
SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP
其中记录 NULL 表示所有人的登录次数。
我们可以使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:
SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
相关文章推荐
- MySQL 5种常用查询语句-where
- 23个MySQL常用查询语句
- 23个MySQL常用查询语句
- 23个MySQL常用查询语句
- 23个MySQL常用查询语句
- MySQL中优化sql语句查询常用的30种方法
- mysql 常用命令,连接数据库,查看建表语句,批量导入数据,批量更新数据,连接查询
- mysql常用查询语句
- mysql常用查询语句
- 23个MySQL常用查询语句
- Mysql 常用复杂的查询语句(持续更新)
- MYSQL基本查询语句练习2--GROUP BY HAVING COUNT 查找分数表中一个学生同一课程有两条数据
- 23个MySQL常用查询语句
- MySql常用查询语句命令
- 23个MySQL常用查询语句
- 23个MySQL常用查询语句
- 23个MySQL常用查询语句
- 收藏 23个MySQL常用查询语句
- 浅谈MySQL中优化sql语句查询常用的30种方法
- 23个MySQL常用查询语句