时间:2023-10-30来源:系统城装机大师作者:佚名
GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。
工具:
sqlyog
| 1 2 3 4 5 6 7 8 |
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `number` int(11) DEFAULT NULL, `sex` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL, `salary` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |


信息就不补充了~
根据性别 sex 来进行分组,查询 user 表中的姓名,年龄,性别。虽然是分组了,但只显示一个用户,其他的不显示。
| 1 | SELECT NAME,age,sex FROM USER GROUP BY sex; |

GROUP BY语句中的GROUP_CONCAT函数()根据 sex 字段,来查询 name字段和 age字段的详细信息。
| 1 | SELECT sex ,GROUP_CONCAT(NAME), GROUP_CONCAT(age)FROM USER GROUP BY sex; |

count函数来查询性别的总人数根据 sex 字段来查询 name 字段的详细信息和 sex 字段性别的人数。
| 1 | SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex) FROM USER GROUP BY sex; |

where语句根据 sex字段进行分组,用 where语句来查询年龄大于25的人数
| 1 | SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex) FROM USER WHERE age >25 GROUP BY sex; |

SUM MAX MIN AVG 函数根据 sex 用 SUM MAX MIN AVG 函数来查询用户的总资金,最大资金,最小资金,平局资金
| 1 | SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex),SUM(salary),MAX(salary),MIN(salary),AVG(salary) FROM USER GROUP BY sex; |

HAVING 子句在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。 HAVING 子句可以让我们筛选分组后的各组数据。 根据 sex 语句进行分组,来查询各组中资金大于1500的组
| 1 | SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex) FROM USER GROUP BY sex HAVING SUM(salary)>1500; |

WITH ROLLUP 子句:WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。
| 1 | SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex),SUM(salary),MAX(salary),MIN(salary),AVG(salary) FROM USER GROUP BY sex WITH ROLLUP; |

从中发现 GROUP BY 函数还是十分强大的,使得分组查找效率更高!
2023-10-30
windows上的mysql服务突然消失提示10061 Unkonwn error问题及解决方案2023-10-30
MySQL非常重要的日志bin log详解2023-10-30
详解MySQL事务日志redo log一、单表查询 1、排序 2、聚合函数 3、分组 4、limit 二、SQL约束 1、主键约束 2、非空约束 3、唯一约束 4、外键约束 5、默认值 三、多表查询 1、内连接 1)隐式内连接: 2)显式内连接: 2、外连接 1)左外连接 2)右外连接 四...
2023-10-30
Mysql删除表重复数据 表里存在唯一主键 没有主键时删除重复数据 Mysql删除表中重复数据并保留一条 准备一张表 用的是mysql8 大家自行更改 创建表并添加四条相同的数据...
2023-10-30