数据库MYSQL学习总结20—GROUP BY对记录进行分组
2019-04-18 19:11
387 查看
版权声明:. https://blog.csdn.net/WildestDeram/article/details/89374430
GROUP BY对记录进行分组
把值相同放到一个组中,最终查询出的结果只会显示组中一条记录
[code]-- 测试分组 -- 按照性别分组sex SELECT id,username,sex FROM test3.user GROUP BY sex;
[code]-- 分组配合GROUP_CONCAT()查看组中某个字段的详细信息 -- 按照性别分类,查询组中的用户名有哪些 SELECT GROUP_CONCAT(username),age,sex,addr FROM test3.user GROUP BY sex;
[code]-- 如果想统计人数就要配合聚合函数来使用 COUNT()统计记录总数 SUM()求和 MAX() MIN() AVG()平均值 -- 测试COUNT() -- 测试表中有多少条记录 SELECT COUNT(*) FROM test3.user; -- 还可以给改记录取名,然后可以通过名称取得对于的值 SELECT COUNT(*) AS total_user FROM test3.user; -- 如果写的是COUNT(字段名称),字段中的值为NULL,不会进行统计 -- 写COUNT(*)会统计NULL值
[code]-- 按照sex分组,得到用户名详细,并且分别组中的总人数 SELECT sex,GROUP_CONCAT(username) AS userDetail,COUNT(*) AS totalUser FROM test3.user GROUP BY sex;
[code]-- 按照addr分组,得到用户名的详情,总人数,得到组中年龄的总和,年龄的最小值,最大值,平均值 SELECT addr, GROUP_CONCAT(username) AS userDetail, COUNT(*) AS totalUser, SUM(age) AS sum_age, MAX(age) AS max_age, MIN(age) AS min_age, AVG(age) AS avg_age FROM test3.user GROUP BY addr;
[code]-- 配合WITH ROLLUP关键使用 会在记录末尾添加一条记录,是上面所有记录的总和 SELECT GROUP_CONCAT(username) AS user_name, COUNT(*) AS user_sum FROM user GROUP BY sex WITH ROLLUP;
[code]-- 按照字段的位置来分组 SELECT addr,sex, GROUP_CONCAT(id) AS ID, GROUP_CONCAT(username) AS oo, COUNT(*) AS totalUser, SUM(age) AS sum_age, MAX(age) AS max_age, MIN(age) AS min_age, AVG(age) AS avg_age FROM test3.user GROUP BY 2;
[code]-- HAVING子句对分组结果进行二次筛选 -- 按照sex分组,统计人数<=4 -- HAVING后面可以加通过聚合函数操作的列 SELECT sex, GROUP_CONCAT(username) AS OO, COUNT(*) AS TT FROM user GROUP BY sex HAVING COUNT(*)<=4;
相关文章推荐
- 数据库:深入浅出mysql学习笔记【超级详细(四)】--排序的使用,GROUP BY 语句分组
- MySQL学习足迹记录11--分组数据--GROUP BY,HAVING
- mysql group by 多个字段进行分组并获取最新一条的记录
- 【数据库】mysql 索引学习记录
- mysql分组取每组前几条记录(排名) 附group by与order by的研究
- mysql分组取每组前几条记录(排名) 附group by与order by的研究
- mySql-数据库之存储过程学习总结
- Mysql学习总结(20)——MySQL数据库优化的最佳实践
- mysql中对group by分组后的数据进行count()
- JUnit学习笔记20---对数据库应用程序进行单元测试4
- mysql分组取每组前几条记录(排名) 附group by与order by的研究
- Mysql学习总结(16)——Mysql之数据库设计规范
- MYSQL GROUP BY 对多个字段进行分组
- 数据库MYSQL学习总结21—ORDER BY实现排序效果
- 数据库MYSQL学习总结32—日期时间常用函数的使用
- 【数据库-MySql】按时间间隔分组查询 group by count(*) date_format
- MySQL 数据库中删除重复记录的方法总结
- [MySQL] 分组排序取前N条记录以及生成自动数字序列,类似group by后 limit
- php + mysql 获取数据库中的记录(特别是高效的分页功能) 完全个人经验总结,仅供参考!
- mysql使用GROUP BY分组实现取前N条记录的方法