我有一个这样的表,说它是tableA。我需要计算每个“源”列的“目标”列有多少个唯一值。我该如何使用选择计数呢?
Source Target
10000 1026
10000 1027
10000 1147
10000 2308
10000 2475
10000 3551
10000 4193
10000 4792
10000 5139
10000 5925
10000 7157
10000 7249
10000 8517
1019 5925
1021 5925
10235 6237
1026 1019
1026 1021
1026 5925
1027 1019
1027 1021
1027 5925
因此,预期结果将是:
UniqSource No_UniqTarget
10000 13
1019 1
1021 1
10235 1
1026 3
1027 3
我的(不好的)解决方案是获得列源的唯一性和列目标的唯一性,但仍然无法满足期望。
select count(distinct(Target)) from tableA
where Source='10000'
对于这个简单的代码,我可以找到每个唯一来源的结果,但是如何像上面的预期结果一样自动生成结果呢?
答案 0 :(得分:1)
尝试一下:
SELECT Source AS UniqSource, COUNT(DISTINCT(Target)) AS No_UniqTarget
FROM tableA
GROUP BY UniqSource;
COUNT(DISTINCT(Target))
也可以写成COUNT(DISTINCT Target)
答案 1 :(得分:0)
这是查询
SELECT Source,count(*) as No_UniqTarget FROM tableA GROUP BY Source