实用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 命令

[译文] SQL JOIN,你想知道的应该都有

实用程序PHP函数来分页SQL查询

Swift具体解释之三----------函数(你想知道的都在这里)

你想知道的HIVE知识,全在这里(建议收藏)