2009-09-08 28 views
5

He recopilado varias entradas en una tabla para un sorteo. Me han pedido por el cliente para proporcionar:MySQL Seleccione el número de entradas que aparecen "N" veces

  • El número de entradas únicas
  • El número de entradas que se producen dos veces.
  • El número de entradas que se producen tres veces.

Soy capaz de determinar el número de entradas únicas, pero no estoy seguro de cómo sacar el número de entradas que ocurren un número específico de veces. He intentado algo como esto:

correo electrónico SELECT count (e-mail) AS NumberOfEntries
de las entradas
GROUP BY NumberOfEntries

que da el error: No podemos grupo de '' NumberOfEntries

I Espero ver algo como esto:
NumberOfEntries/Total
1/1,000 (significa 1,000 personas ingresadas una vez y solo una vez)
2/1,300 (lo que significa 1,300 personas entere d exactamente dos veces)

¡Gracias por cualquier ayuda!

Respuesta

5

Probar:

SELECT numberOfEntries, count(*) FROM (
    SELECT email, count(*) AS numberOfEntries 
    FROM entries 
    GROUP BY email 
) 
GROUP BY numberOfEntries 

Puede añadir HAVING cláusula para seleccionar interior para restringir el recuento de número de entradas devueltas a 1,2,3 o cualquier otra cosa.

3

¿Qué tal esto:

SELECT email, count(email) as NumberOfEntries 
FROM entries 
GROUP BY email 

le dará una lista de correo electrónico y número de entradas (GROUP BY debe enumerar todas las columnas no agregadas). Si desea limitar la selección a solo aquellos correos electrónicos con 2 o 3 entradas, debe usar una cláusula having.

SELECT email, count(email) as NumberOfEntries 
FROM entries 
GROUP BY email 
HAVING NumberOfEntries = 2 

O, para obtener un recuento del número de cada entrada, se puede envolver que en otra consulta como:

SELECT NumberOfEntries, COUNT(*) AS NumberOfEmails 
FROM (SELECT email, count(email) as NumberOfEntries 
    FROM entries 
    GROUP BY email) AS x 
GROUP BY NumberOfEntries 
ORDER BY NumberOfEntries ASC 

Esto debería dar número de entradas, y un recuento de cuántas las personas tienen ese número de entradas (enumeradas a partir de 1 entrada)

Cuestiones relacionadas