2009-10-20 22 views
30

これを行うには比較的簡単な方法が必要だと確信していますが、現時点では私は逃げ出しています。私はこのようなSQLテーブルがあるとします。2つの列(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

SELECT A、B、COUNT(*) たMyTable GROUP BY A、B

FROM
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良い習慣ではありません。 –

+0

私はT_Tに初めて答えると思った。 – snahor

+0

@rexemあなたは可読性のためにそれを言うと思いますが、私は他の理由を見つけることができません。 – snahor

関連する問題