2010-11-09 15 views
14

TABLE quotationmysql count valori di riga univoci

id clientid 
1 25 
2 25 
3 25 
4 25 
5 26 

Come posso interrogare quanti clienti diversi esistono in TABLE quotation? Non voglio che le voci duplicate vengano conteggiate più di una volta.

Ho bisogno che la risposta sia 2, in 1 riga, perché le uniche voci non duplicate sono (25, 26).

+1

Il titolo è fuorviante: non si contano le righe duplicate, ma il numero univoco di righe. Il conteggio delle righe duplicate restituirebbe "4" poiché ci sono 4 righe che hanno lo stesso valore per clientid. – Konerak

+0

Proposto una modifica al titolo della domanda/testo, dal momento che questa domanda è attualmente il migliore hit di Google per "mysql contare le voci duplicate". –

risposta

35
select count(distinct clientid) from quotation 

read more

2

trovo una via d'uscita

SELECT COUNT(*) as total FROM (SELECT COUNT(*) FROM quotation GROUP BY 
clientid) t1 
0
SELECT clientid, COUNT(clientid) FROM quotation 
GROUP BY clientid 
+0

Questo non ottiene il conteggio totale per client come: "select count (clientid distinto) dall'offerta" –

1

Ho provato quanto segue su un database MySQL 5.x.

id è un numero intero e clientid è un numero intero. Ho popolato con due file:

interrogazione
id clientid 
1 25 
2 25 

Questa SQL stamperà le righe che hanno esattamente 2 elementi:

select * from test1 group by clientid having count(*) = 2; 

Se volete 2 o più elementi, sostituire = 2 nell'esempio di cui sopra con >= 2.

select * from test1 group by clientid having count(*) >= 2; 
1

Se si desidera contare il numero totale di voci univoche Ciò restituirà un numero in numero di colonne.

SELECT COUNT(*) as total FROM (SELECT COUNT(*) FROM quotation GROUP BY clientid having count(*) > 1) t1 

Se si desidera contare il numero totale di voci con righe duplicate, utilizzare il seguente mysql.

SELECT COUNT(*) as total FROM (SELECT COUNT(*) FROM quotation GROUP BY clientid having count(*) >= 2) t1