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

背景

前几天复习了一下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

文章来自:https://www.cnblogs.com/everda/p/9057585.html
© 2021 jiaocheng.bubufx.com  联系我们
ICP备案:鲁ICP备09046678号-3