繁体   English   中英

为每一列计算不同的多个列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM