[英]Count distinct multiple columns for each another column
让我们有一个包含三列的表“ pairs”,如下所示:pairs(person,item1,item2)
1, 1, 1
1, 1, 2
1, 1, 2
2, 2, 1
2, 2, 1
如何获得每个人的item1-item2的唯一对数? 像这样:Person,pair_num
1, 2
2, 1
我能想到的是:从人员中选择人员,从(从对中选择不同的人员,item1,item2)中选择count(*);
但是有没有子查询的解决方案吗?
SELECT person, (item1 + item2) AS pair FROM pairs GROUP BY person;
count(distinct)
可以采用多个参数:
select person, count(distinct item1, item2) as numpairs
from pairs
group by person;
如果您希望(1,2)与(2,1)相同,请使用least()
和greatest()
:
select person, count(distinct least(item1, item2), greatest(item1, item2)) as numpairs
from pairs
group by person;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.