2009-10-20 16 views
30

Jestem pewien, że musi to być dość prosta droga, ale w tej chwili uciekam. Załóżmy, że mam tabeli SQL tak:Jak liczyć wiersze, które mają te same wartości w dwóch kolumnach (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 
+-----+-----+-----+-----+-----+ 

Teraz chcę wiedzieć, ile razy pojawia się każda kombinacja wartości dla kolumn A i B, niezależnie od pozostałych kolumn. Tak więc w tym przykładzie chcę mieć coś takiego:

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

Jaki byłby to kod SQL, aby to określić? Czuję, że to nie może być bardzo rzadka rzecz do zrobienia.

Dzięki!

Odpowiedz

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

Spróbuj:

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

ten powinien zrobić:

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 (*) OD MyTable GROUP BY A, B

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

To może być odpowiedź:

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

także poprawne, ale zamawiania przez porządkowych nie jest dobrym nawykiem IIRC. –

+0

Myślałem, że będę pierwszy odpowiedzieć T_T. – snahor

+0

@rexem Przypuszczam, że mówisz to ze względu na czytelność, nie mogę znaleźć innego powodu. – snahor

Powiązane problemy