mysql使用group by分组数据使用总结

本文通过实例演示如何使用MySQL的GROUP BY子句进行数据分组,包括单列和多列分组,以便汇总特定信息,如用户购物次数及具体商品购买频次。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql使用group by子句总结


分组数据的作用: 分组数据可以便于我们汇总表内容的子集,当我们使用group by分组数据的时候,会将表数据按照给出的列排序分组,分成多个逻辑组,我们可以对每个逻辑组使用聚集运算.


我们创建一个表test_one,来展示使用group by分组数据,group by子句告诉mysql按照哪些列来排序分组。

表test_one:

mysql> select * from test_one;
+----+-----+-----------+
| id | uid | shop_name |
+----+-----+-----------+
|  1 |   1 | 牙刷      |
|  2 |   1 | 牙膏      |
|  3 |   1 | 牙刷      |
|  4 |   2 | 笔        |
|  5 |   2 | 钢笔      |
|  6 |   2 | 牙刷      |
|  7 |   2 | 牙刷      |

+----+-----+-----------+

表简介:该表是用户买了什么东西的表,uid表示用户的id,shop_name表示用户买了什么东西.


1.使用单列排序分组数据.

我们可以使用单列来分组数据,将相同的值分到一个逻辑分组中,然后可以汇总每个分组的数据. 

场景:根据test_one表,我们获取每个用户购物多少次.

sql语句: select uid , count(*) from test_one group by uid; 

该sql使用uid列排序分组数据,我们使用count(*)聚集函数,汇总每个分组有多少行,获取每个用户购物多少次。

结果:

mysql> select uid ,count(*) from test_one group by uid;
+-----+----------+
| uid | count(*) |
+-----+----------+
|   1 |        3 |
|   2 |        4 |
+-----+----------+


2.使用多列排序分组数据.

group by子句可以使用多列来分组,使用多列分组的执行流程是:先按照第一列进行分组,分成多个逻辑分组,然后我们按照第二列进行的分组,第二列的分组是在第一列分组的基础上进行的,也就是说在第一列分组的基础上,将每个分组的数据按照第二列来进行分组,最后汇总数据的时候是在最后一个规定的分组上进行的。

场景:我们想获取用户购买每种商品购买了多少次.

sql语句:select uid ,shop_name,count(*) from test_one group by uid,shop_name;

该sql语句,先使用uid列进行分组,分组后的结果是用户购买了哪些商品,然后我们根据shop_name 进行分组,在按照uid分组的基础上,我们可以将用户购买的相同的商品分组,汇总数据是在最后一个规定的分组上.

结果:

mysql> select uid ,shop_name,count(*) from test_one group by uid,shop_name;
+-----+-----------+----------+
| uid | shop_name | count(*) |
+-----+-----------+----------+
|   1 | 牙刷      |        2 |
|   1 | 牙膏      |        1 |
|   2 | 牙刷      |        2 |
|   2 | 笔        |        1 |
|   2 | 钢笔      |        1 |
+-----+-----------+----------+

我们可以获取用户的购买某种商品多少次。


总结:group by子句列出的列必须是检索列。


如果有错误请大家指出,谢谢!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值