2009-09-08 11 views
5

Ho raccolto un numero di voci in una tabella per una lotteria. Mi è stato chiesto da parte del cliente di fornire:MySQL Selezionare il numero di voci che si verificano per "N" volte

  • Il numero di voci univoche
  • Il numero di voci che si verificano due volte.
  • Il numero di voci che si verificano tre volte.

Sono in grado di determinare il numero di voci univoche, ma non sono sicuro di come estrarre il numero di voci che si verificano un numero specifico di volte. Ho provato qualcosa di simile:

email SELECT, count (e-mail) AS NumberOfEntries
DA voci
GROUP BY NumberOfEntries

Questo dà l'errore: non è possibile raggruppare su '' NumberOfEntries

I spero di vedere qualcosa di simile:
Numero Numero/Totale
1/1.000 (Significato 1.000 persone inserite una volta e una sola volta)
2/1.300 (Significato 1.300 persone entere d esattamente due volte)

Grazie per qualsiasi aiuto!

risposta

5

Prova:

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

È possibile aggiungere HAVING clausola select interna per limitare i conteggi per il numero di voci tornato a 1,2,3 o qualsiasi altra cosa.

3

ne dite di questo:

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

vi darà un elenco di e-mail e numero di ingressi (GROUP BY dovrebbe elencare tutte le colonne non di aggregazione). Se si desidera limitare la selezione solo a quelle e-mail con 2 o 3 voci, è necessario utilizzare una clausola having.

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

Oppure, per ottenere un conteggio del numero di ogni voce, si può avvolgere che in un'altra query come:

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 

Questo dovrebbe dare il numero di voci, e un conteggio di quanti le persone hanno quel numero di voci (elencate da 1 entrata in su)

Problemi correlati