码迷,mamicode.com
首页 > 数据库 > 详细

【实用sql函数group_conca】我知道你想group_concat和count一起用,比如不同组合的人数?

时间:2018-05-18 20:09:17      阅读:2263      评论:0      收藏:0      [点我收藏+]

标签:abc   lis   bcb   concat   产品   -o   insert   sql   默认   

背景

前几天复习了一下MySQL函数,知道一个group_concat函数很好用,但一直没实际用过。今天碰到一个问题,把我问懵逼了。假设有一张购买产品增量表order_list。

alter table pet drop column user2_id;

insert into pet(user_id,pet_id,id) values(2,‘A‘,1),(3,‘B‘,1),(4,‘C‘,2),(5,‘A‘,2),(6,‘A‘,3),(7,‘B‘,2),(8,‘C‘,2),(9,‘D‘,1);

/*

查询每个user_id购买过的所有产品(去重)

select o.user_id,group_concat(distinct o.product_id ORDER BY o.product_id Asc SEPARATOR ‘ ‘) from order_list o
group by o.user_id

说明:1.group_concat里的distinct不是必须的,没有只是不去重;

2.ORDER BY o.product_id ASC也不是必须的,默认是合并的部分就是按升序排列,想按降序可以用DESC;

3.SEPARATOR ‘ ‘也不是必须的,默认是按逗号分隔。

例如:

SELECT o.user_id,GROUP_CONCAT(o.product_id) FROM order_list o
GROUP BY o.user_id
*/

/*

查询同时拥有多个产品的各个产品组合分别有多少人

select t.product_group,count(t.user_id) from
(select o.user_id,group_concat(distinct o.product_id ORDER BY o.product_id Asc SEPARATOR ‘ ‘) ‘product_group‘ from order_list o
group by o.user_id
)t
group by t.product_group

*/

查询A/B/C/D/AB/AC/AD/BC/BD/CD/ABC....等4+6+4+1=15个组合分别有多少人

select o.product_id,count(distinct o.id) from order_list o
group by o.product_id
union
select from

【实用sql函数group_conca】我知道你想group_concat和count一起用,比如不同组合的人数?

标签:abc   lis   bcb   concat   产品   -o   insert   sql   默认   

原文地址:https://www.cnblogs.com/everda/p/9057585.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!