2012-02-10 5 views
6
select count(*) as count from table 
group by foreign_id order by count 

Questo restituisce un numero di corrispondenze per ciascun ID straniero. Tuttavia, quello che sto cercando è quello di riassumere i risultati.Come contare il numero di gruppi restituiti da un gruppo?

Così il risultato sarebbe:

10 results grouping 1 elements 
5 results grouping 2 elements 
7 results grouping 7 elements 
+1

Si prega di spiegare che cosa si intende di "_n_ risultati raggruppamento _n_ elementi" Cosa deve essere raggruppato? –

+1

Non capisco proprio questo '5 risultati che raggruppano 2 elementi'. Cosa rappresentano '5' e' 2' lì? –

+1

È piuttosto difficile da spiegare. Attualmente se è abbinata alla chiave esterna una volta che pronuncerà 1 incontro, passerà alla successiva e pronuncerà 1 partita e due partite per un'altra. Che cosa sto cercando di fare è determinare quante volte la sua trovata 1 corrisponde. O quante volte ha trovato 3 partite. –

risposta

11

Ok, ce l'ha. Il titolo della questione expainls meglio di domanda stessa :)

è necessario sapere prima quante volte ogni FK appare:

select count(*) as GroupAmount from t1 
group by foreign_id 

Una volta fatto questo, è necessario raggrupparli per ottenere il quantità di volte in cui ogni articolo appare come sopra. Questo si tradurrà in:

select GroupAmount, count(*) GroupAmountTimes from (
    select count(foreign_id) as GroupAmount from t1 
    group by foreign_id 
) as SubQuery 
group by GroupAmount 

vederlo in azione here

+1

il collegamento a sqlfiddle ha smesso di funzionare :( – Shai

4

Contare il numero di gruppi restituiti da un gruppo da:

select foreign_id as GroupAmount, count(foreign_id) as GroupAmountTimes 
from t1 
group by foreign_id 

http://sqlfiddle.com/#!2/35661/42