2013-04-07 62 views
1

例如,如果我有一個表,如下所示: [貓] [paramA上] [paramB]SQL:如何通過查詢現有組中的不同對?

,並希望建立一個查詢以輸出 [貓] [不同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 

我使用[貓]我的組通過參數,不知道如何使這個框架內對價值的不同工作。

+0

您可以連接paramA上+ paramB在視圖中,再算上是什麼? – OldProgrammer 2013-04-07 02:03:48

+1

您正在使用哪些DBMS? Postgres的?甲骨文? – 2013-04-07 14:08:08

回答

2

一種方法是選擇不同的貓,paramA和paramB。然後做你的小組由該結果:

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

SQL Fiddle

0

您可以連接paramA上和paramB計算重複計數

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

Example on SQLServer2008

0

你可能真的需要指定你正在使用的DBMS,因爲它們中的一些,比如PostgreSQL,將允許你這樣做,因爲這簡單的東西:

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