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

Esto devuelve un número de coincidencias para cada identificación extranjera. Sin embargo, lo que estoy buscando es resumir los resultados.¿Cómo contar la cantidad de grupos devueltos por un grupo?

Así, el resultado sería:

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

Por favor explique lo que quiere decir por "_n_ resultados agrupando _n_ elementos" ¿Qué se va a agrupar? –

+1

No me sale exactamente este '5 resultados que agrupan 2 elementos'. ¿Qué representan '5' y' 2' allí? –

+1

Es bastante difícil de explicar. Actualmente, si coincide con la clave externa una vez que diga 1 coincidencia, pasará a la siguiente y dirá 1 partido y luego dos partidos para otro. Lo que quiero hacer es determinar cuántas veces se encuentra 1 coincidencia. O cuántas veces se encuentran 3 coincidencias. –

Respuesta

11

Entendido. El título de la pregunta expainls mejor que la pregunta misma :)

lo que necesita saber primero cuántas veces aparece cada FK:

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

Una vez que tenga esto, hay que agruparlos para obtener el cantidad de veces que cada elemento aparece de la misma manera que arriba. Esto dará como resultado:

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

verlo en acción here

+1

el enlace a sqlfiddle dejó de funcionar :( – Shai

4

Contar el número de grupos devueltos por un grupo de:

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

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

Cuestiones relacionadas