SQL:如何查询现有组中的不同对?

时间:2013-04-07 01:56:41

标签: sql

例如,如果我有一个表格如下: [cat] [paramA] [paramB]

并希望构造一个输出查询 [cat] [不同paramA / paramB对的计数]。

例如

cat    paramA    paramB
001   A         B
001   A         C
001   B         B
001   A         C
002   A         A

desired output:
cat    count
001    3
002    1

我通过参数使用[cat]作为我的组,并且不知道如何在此框架中对这对值进行不同的工作。

3 个答案:

答案 0 :(得分:2)

一种方法是在cat,paramA和paramB上选择distinct。然后根据结果做你的小组:

select cat, count(*) from 
(select distinct * from data) as tmp
group by cat

SQL Fiddle

答案 1 :(得分:0)

您可以连接paramA和paramB来计算DISTINCT计数

SELECT cat, COUNT(DISTINCT paramA + paramB) AS [count]
FROM Table1
GROUP BY cat

Example on SQLServer2008

答案 2 :(得分:0)

您可能确实需要指定您正在使用的DBMS,因为其中一些,例如, PostgreSQL,允许你做一些简单的事情:

SELECT cat, COUNT(DISTINCT (paramA, paramB))
FROM atable
GROUP BY cat
;