1

例如,如果我有一个如下表:[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] 作为我的参数组,并且不知道如何在此框架内对这对值进行不同的处理。

4

3 回答 3

2

一种方法是在 cat、paramA 和 paramB 上选择 distinct。然后根据该结果进行分组:

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

SQL小提琴

于 2013-04-07T02:25:12.563 回答
0

您可能确实需要指定您正在使用的 DBMS,因为其中一些,例如PostgreSQL,将允许您执行如下简单的操作:

SELECT cat, COUNT(DISTINCT (paramA, paramB))
FROM atable
GROUP BY cat
;
于 2013-04-07T14:28:00.657 回答
0

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

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

SQLServer2008 上的示例

于 2013-04-07T13:43:17.287 回答