2011-05-06 24 views
14

Con la siguiente instrucción SQL que puedo conseguir todos los valores únicos con sus recuentos para una columna dada:¿Cómo puedo contar pares únicos de valores en SQL?

select column, count(column) as count 
     from table group by column order by count desc; 

¿Cómo puedo obtener todos los pares de valores únicos con recuentos. Por ejemplo, si tuviera una tabla con columnas first_name y last_name, podría encontrar resultados como este:

first_name | last_name | recuento

John | Smith | 42

John | Johnson | 39

David | Smith | 37

etc ...

¿Puedo hacer esto en SQL básica? Generalmente utilizo MySQL, pero asumo que cualquier solución que se te ocurra debe ser traducible a cualquier db.

Respuesta

16

Has casi lo consiguió correcto ... Usted sólo tiene que añadir una columna adicional GROUP BY así:

SELECT [first_name], [last_name], COUNT(*) AS [Count] 
FROM [Table] 
GROUP BY [first_name], [last_name] 
ORDER BY [Count] DESC; 
7

Usa varias columnas en tu grupo por cláusula.

select first_name, last_name, count(*) as count from table group by first_name, last_name 
0
SELECT first_name, last_name, COUNT(distinct last_name) AS c 
FROM ttable 
GROUP BY first_name, last_name 
HAVING c > 999 
ORDER BY c DESC 

Adición de distinta lo hará en MySQL. Gracias

6

Si solo quiere contar el número de pares distintos, puede hacerlo de forma más simple. Una cláusula GROUP BY no es necesaria.

SELECT COUNT(DISTINCT first_name, last_name) AS count_names FROM Table 
Cuestiones relacionadas