Tengo una tabla con dos columnas: una identificación de pareja y una serie de "marcas" para esa pareja . Me gustaría obtener un resultado que enumere el número de parejas que tienen x
marcas o más para cada uno de los valores de x
. Así que mi entrada se parece a:Contando el número de filas con un valor mayor o igual a un valor de otra columna en SQL
| couple_id | num_marks | |-----------+-----------| | 9 | 7 | | 6 | 6 | | 8 | 6 | | 2 | 5 | | 3 | 4 | | 5 | 4 | | 1 | 3 | | 4 | 3 | | 10 | 2 | | 7 | 1 |
Y me gustaría obtener el resultado:
| num_marks | num_couples | |-----------+-------------| | 7 | 1 | | 6 | 3 | | 5 | 4 | | 4 | 6 | | 3 | 8 | | 2 | 9 | | 1 | 10 |
es decir, hubo 1 pareja con 7 o más marcas, 3 parejas con 6 o más marcas, 4 parejas con 5 o más marcas, etc. He podido hacer una consulta al devolver el número de parejas con exactamenten
marcas:
SELECT num_marks,
count(couple_id) AS num_couples
FROM table_name
GROUP BY num_marks
ORDER BY num_marks DESC;
que produce:
| num_marks | num_couples | |-----------+-------------| | 7 | 1 | | 6 | 2 | | 5 | 1 | | 4 | 2 | | 3 | 2 | | 2 | 1 | | 1 | 1 |
Ie hubo 1 pareja con 7 marcas, 2 parejas con 6 marcas, 1 con 5, etc. ¿Hay una manera conveniente de sumar efectivamente el valor de cada fila con las de más de ? Puedo hacerlo a nivel de aplicación, pero parece ser el tipo de cosa que realmente pertenece a la base de datos.
¡Eso es increíble! No sabía que podrías tener 'SELECT's como columnas. Es ese SQL estándar que funcionaría, p. SQLite y Postgres? Además, mi 'table_name' no es realmente una tabla, es un' SELECT' de bocinazo por sí mismo; ¿Eso rompería las cosas? – haxney
@haxney - He editado - sí, puedes reemplazar table_name con otra consulta, necesitarás alias para usarlo en la selección externa. – StuartLC