Tengo una mesa de alumnos:
id | age
--------
0 | 25
1 | 25
2 | 23
Quiero consultar a todos los estudiantes, y una columna adicional que cuenta cuántos estudiantes son de la misma edad:
id | age | count
----------------
0 | 25 | 2
1 | 25 | 2
2 | 23 | 1
¿Cuál es la forma más eficiente de hacer esto? Me temo que una subconsulta será lenta, y me pregunto si hay una mejor manera . ¿Esta ahí?
sql
performance
Assaf Lavie
fuente
fuente
Si está utilizando Oracle, entonces una característica llamada análisis hará el truco. Se parece a esto:
Si no está utilizando Oracle, deberá volver a unirse a los recuentos:
fuente
Aquí hay otra solución. este usa una sintaxis muy simple. El primer ejemplo de la solución aceptada no funcionó en versiones anteriores de Microsoft SQL (es decir, 2000)
fuente
Haría algo como:
fuente
fuente
y si los datos en la columna "edad" tienen registros similares (es decir, muchas personas tienen 25 años, muchas otras tienen 32 y así sucesivamente), causa confusión al alinear el conteo correcto con cada estudiante. Para evitarlo, también me uní a las tablas de identificación del estudiante.
fuente