2009-10-20 154 views
30

我相信肯定有一個相對直接的方法來做到這一點,但目前它正在逃避我。假設我有一個SQL表是這樣的:如何計算兩列中具有相同值的行(SQL)?

+-----+-----+-----+-----+-----+ 
| A | B | C | D | E | 
+=====+=====+=====+=====+=====+ 
| 1 | 2 | 3 | foo | bar | << 1,2 
+-----+-----+-----+-----+-----+ 
| 1 | 3 | 3 | biz | bar | << 1,3 
+-----+-----+-----+-----+-----+ 
| 1 | 2 | 4 | x | y | << 1,2 
+-----+-----+-----+-----+-----+ 
| 1 | 2 | 5 | foo | bar | << 1,2 
+-----+-----+-----+-----+-----+ 
| 4 | 2 | 3 | foo | bar | << 4,2 
+-----+-----+-----+-----+-----+ 
| 1 | 3 | 3 | foo | bar | << 1,3 
+-----+-----+-----+-----+-----+ 

現在,我想知道的列值A和B的每個組合有多少次出現,而不管其他列。所以,在這個例子中,我想要一個這樣的輸出:

+-----+-----+-----+ 
| A | B |count| 
+=====+=====+=====+ 
| 1 | 2 | 3 | 
+-----+-----+-----+ 
| 1 | 3 | 2 | 
+-----+-----+-----+ 
| 4 | 2 | 1 | 
+-----+-----+-----+ 

什麼是SQL來確定?我覺得這不是一件非常不尋常的事情要做。

謝謝!

回答

59
SELECT A,B,COUNT(*) 
FROM the-table 
GROUP BY A,B 
13

TRY:

SELECT 
    A, B , COUNT(*) 
    FROM YourTable 
    GROUP BY A, B 
9

這應做到:

SELECT A, B, COUNT(*) 
FROM TableName 
GROUP BY A, B; 
5
SELECT A,B,COUNT(*) 
FROM table 
GROUP BY A,B 
4

選擇A,B,COUNT(*) FROM MyTable的 GROUP BY A,B

6
SELECT A,B,COUNT(1) As COUNT_OF 
FROM YourTable 
GROUP BY A,B 
2

這可能是答案:

SELECT a, b, COUNT(*) 
FROM <your table name here> 
GROUP BY a,b 
ORDER BY 3 DESC; 
+1

也是正確的,但排序由序不是一個好習慣IIRC。 – 2009-10-20 20:29:18

+0

我以爲我會第一個回答T_T。 – snahor 2009-10-20 20:30:40

+0

@rexem我想你說這是因爲可讀性,我找不到其他原因。 – snahor 2009-10-20 20:33:05

相關問題