Если у меня есть таблица случайных значений в таблице sql, как я могу экспортировать и отображать их как гребень, а не абсолютное значение ... например .. если три значения равны 30 85 и 90, как я могу получить 30 сделать дисплей как 1 или 1, 85, как 2 или 2-ой т.д.,sql output как рейтинг
ответ
MySQL не имеет аналитическую функцию поддержки (ROW_NUMBER, RANK, DENSE_RANK), который как правило, вы будете использовать для таких требований.
Использование:
SELECT @rownum := @rownum + 1 AS ranking
FROM YOUR_TABLE t
JOIN (SELECT @rownum := 0) r
ORDER BY t.value
Пример:
SELECT x.num,
@rownum := @rownum + 1 AS ranking
FROM (SELECT 30 AS num
UNION ALL
SELECT 85
UNION ALL
SELECT 90) x
JOIN (SELECT @rownum := 0) r
ORDER BY x.num
Вы могли бы использовать:
SELECT (SELECT COUNT(*)
FROM YOUR_TABLE b
WHERE b.value <= a.value) AS ranking
FROM YOUR_TABLE a
... но дубликаты будут иметь то же значение ранжирования. И вы должны убедиться, что сравнение значений находится в правильном направлении.
Try:
set @i = 0;
select myValue,
@i:[email protected]+1 as Ranking
from myTable
order by myValue ASC
Возможно, вы захотите «ORDER BY myValue ASC». –
@Byron @JohnFx: действительно, спасибо! –
Возможный дубликат [Что является лучшим способом создания рангов в MYSQL?] (Http://stackoverflow.com/questions/431053/what-is-the-best-way-to-generate-ranks-in- mysql) – JohnFx