问了讯飞星火这是给的解释:
在MySQL中,GROUP BY子句用于将具有相同值的行组合在一起,以便对每个组执行聚合函数(如SUM、COUNT、AVG等)。
我的理解,
1,就是在一堆数据中将含有共同特性(表中的某个相同字段)的数据分到同一组放到一起,然后算他们的数量什么的,
2,为什么select的时候只能取group by后面的字段,
因为你是按照某个共同点放到一起的,不是group by的字段:
拿快递分仓举例,按省份分成一堆一堆的,你想知道每一堆是哪个省的,那很容易,因为你分堆的时候就是按省份分的,但你想知道快递的重量就不行了,因为这一堆中的重量都不一样,
但你分堆的时候,你将省份一样且重量一样的分组,那你就能知道每一堆每个快递的省份和重量,
select 省份,重量 from 快递库 group by 快递的省份,快递的省份重量
以下是一个使用GROUP BY的基本示例:
以全班学生各科成绩表为例,通过group by 算出每个学生总分
student_id name subject score
1,袁大蒜 语文 100
2,胡图图 语文 99
1,袁大蒜 数学 100
4,袁云起 语文 98
4,袁云起 数学 98
1,袁大蒜 英文 100
1,袁大蒜 物理 100
1,袁大蒜 化学 100
SELECT name, SUM(score) as total_score
FROM students
GROUP BY name;
结果:
name sum(score)
袁大蒜 500
胡图图 99
袁云起 196
为什么俩例子不一样,因为快递分堆是刚想的,成绩表例子是之前写的。