2009-10-20 18 views
30

Estoy seguro de que debe haber una manera relativamente directa de hacerlo, pero me está escapando en este momento. Supongamos que tengo una tabla de SQL como esto:¿Cómo contar las filas que tienen los mismos valores en dos columnas (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 
+-----+-----+-----+-----+-----+ 

Ahora, quiero saber cuántas veces aparece cada combinación de valores para las columnas A y B, independientemente de las otras columnas. Por lo tanto, en este ejemplo, quiero una salida algo como esto:

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

¿Cuál sería el SQL para determinar eso? Siento que esto no debe ser algo muy raro de querer hacer.

Gracias!

Respuesta

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

Esto debe hacerlo:

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

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

Esta podría ser la respuesta:

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

También correcto, pero por pedido ordinales no es un buen hábito IIRC. –

+0

Pensé que sería el primero en responder T_T. – snahor

+0

@rexem Supongo que lo dices debido a la legibilidad, no puedo encontrar otra razón. – snahor

Cuestiones relacionadas