У меня есть таблица с двумя столбцами: пара идентификаторов и количество "отметок" для этого
пара. Мне нужен результат, в котором указано количество пар с отметками x
.
или более для каждого из значений x
. Итак, мой ввод выглядит так:
| couple_id | num_marks | |-----------+-----------| | 9 | 7 | | 6 | 6 | | 8 | 6 | | 2 | 5 | | 3 | 4 | | 5 | 4 | | 1 | 3 | | 4 | 3 | | 10 | 2 | | 7 | 1 |
И я хотел бы получить результат:
| num_marks | num_couples | |-----------+-------------| | 7 | 1 | | 6 | 3 | | 5 | 4 | | 4 | 6 | | 3 | 8 | | 2 | 9 | | 1 | 10 |
Т.е.была 1 пара с 7 и более баллами, 3 пары с 6 и более баллами, 4
пары с 5 или более баллами и т. д. Мне удалось придумать запрос, чтобы
вернуть количество пар с ровно n
меток:
SELECT num_marks,
count(couple_id) AS num_couples
FROM table_name
GROUP BY num_marks
ORDER BY num_marks DESC;
Что дает:
| num_marks | num_couples | |-----------+-------------| | 7 | 1 | | 6 | 2 | | 5 | 1 | | 4 | 2 | | 3 | 2 | | 2 | 1 | | 1 | 1 |
Т.е. Была 1 пара с 7 баллами, 2 пары с 6 баллами, 1 с 5 и т. д. есть удобный способ эффективно суммировать значение каждой строки с указанными выше Это? Я могу сделать это на уровне приложения, но это похоже на то, что который действительно принадлежит базе данных.