实用sql函数group_conca我知道你想group_concat和count一起用,比如不同组合的人数?
Posted everda
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实用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
以上是关于实用sql函数group_conca我知道你想group_concat和count一起用,比如不同组合的人数?的主要内容,如果未能解决你的问题,请参考以下文章
Mybatis 中的 PreparedStatement 预编译,不是你想的那么简单!
在 SQL PLUS ORACLE 11gr1 上使用 DATABASE 命令