У меня есть таблица, которая выглядит следующим образом:MySQL Условный подсчет на основе значения в другом столбце
id rank
a 2
a 1
b 4
b 3
c 7
d 1
d 1
e 9
Мне нужно, чтобы получить все различные значения ранга на один столбец и подсчета всех уникальных идентификаторов, которые достигли равный или более высокий ранг, чем в первом столбце.
Так что результат мне нужно будет что-то вроде этого:
rank count
1 5
2 4
3 3
4 3
7 2
9 1
Я был в состоянии сделать таблицу со всеми уникальными идентификаторами с их максимальным рангом:
SELECT
MAX(rank) AS 'TopRank',
id
FROM myTable
GROUP BY id
Я m также может получить все различные значения рангов и подсчитать, сколько идентификаторов достигло именно этого ранга:
SELECT
DISTINCT TopRank AS 'rank',
COUNT(id) AS 'count of id'
FROM
(SELECT
MAX(rank) AS 'TopRank',
id
FROM myTable
GROUP BY id) tableDerp
GROUP BY TopRank
ORDER BY TopRank ASC
B ut Я не знаю, как получить счет id, где ранг равен ИЛИ ВЫШЕ, чем ранг в столбце 1. Попытка SUM (CASE КОГДА TopRank> TopRank THEN 1 END), естественно, ничего мне не дает. Итак, как я могу получить счет id, где TopRank выше или равен каждому отдельному значению рейтинга? Или я искал неправильный путь и должен попробовать что-то вроде текущих итогов? Я попытался найти похожие вопросы, но я думаю, что я полностью ошибаюсь, потому что я не мог найти никого, и это кажется довольно простой проблемой, которую я как бы переусердствовал. Любая помощь очень ценится.
Извините, не могли бы вы объяснить, почему ранг 1 = 5, а не 3 ?? – Strawberry
Привет клубника. Потому что есть 5 отдельных идентификаторов, имеющих ранг 1 или выше (a, b, c, d и e). – miarkito