2011-06-06 12 views
14

Me gustaría que una consulta SQL para MS Jet 4.0 (MSSql?) Obtenga un recuento de todos los duplicados de cada número en una base de datos.Cuente todos los duplicados de cada valor

Los campos son: id (AUTONUM), number (texto)

Tengo una base de datos con una gran cantidad de números.

Cada número debe devolverse en orden numérico, sin duplicados, con un recuento de todos los duplicados.

número campos que contienen 1, 2, 2, 3, 1, 4, 2 deberían volver:

1, 2 
2, 3 
3, 1 
4, 1 

Respuesta

27
SELECT col, 
     COUNT(dupe_col) AS dupe_cnt 
FROM  TABLE 
GROUP BY col 
HAVING COUNT(dupe_col) > 1 
ORDER BY COUNT(dupe_col) DESC 
+1

+1 para recordar 'HAVING COUNT (dupe_col)> 1' –

+1

no creo que se necesita el' HAVING' como OP incluye los valores de las columnas 3 y 4, ambos con una cuenta de 1, en sus resultados esperados. –

+1

Además, el OP tiene el orden por col, no por el recuento, a menos que 2 sea mayor que 3 ahora =) –

4

Esto es bastante simple.

Suponiendo que los datos se almacenan en una columna llamada A en una tabla llamada T, puede utilizar

select A, count(A) from T group by A 
5

Lo que quiere el operador COUNT.

SELECT NUMBER, COUNT(*) 
FROM T_NAME 
GROUP BY NUMBER 
ORDER BY NUMBER ASC 
14
SELECT number, COUNT(*) 
    FROM YourTable 
    GROUP BY number 
    ORDER BY number 
+0

Creo que esta fue la primera respuesta correcta. –

+0

lol, me equivocaría, estaba ordenando las cosas mal en mi cabeza. –

+0

@mootinator: No, la primera respuesta fue @ Duncan's, luego @ dpmattingly's. Cuál de ellos cuente como el más eficiente, depende de usted. –

Cuestiones relacionadas