Я использую следующий код ниже, чтобы получить ранг изображения из моей таблицы. Пока что все работает отлично, но проблема в том, что если 2 или более изображений имеют одинаковые точки, они получают одинаковые оценки. То, что я хочу, это если 2 изображения имеют похожие точки, я хочу ранжировать их по дате их отправки.
SELECT uo.*,
( SELECT COUNT(DISTINCT ui.total_points)
FROM photo_list ui
WHERE ui.total_points>= uo.total_points
) AS rank
FROM photo_list uo
Вот как выглядит мой стол
id | photo_id | total_points
1 432cfc 1
2 fsd324 123
3 gd43ds 5
Вы можете добавить больше условий для сравнения:
SELECT uo.*,
(SELECT COUNT(*)
FROM photo_list ui
WHERE ui.total_points > uo.total_points OR
ui.total_points = uo.total_points AND ui.submitted_date >= uo.submitted_date
) AS rank
FROM photo_list uo
Я не уверен, в каком порядке вы хотите ранжировать для представленной даты, но либо >=
или же <=
должно сработать. Обратите внимание, что я также изменил COUNT()
, Подсчет только отправленных баллов не имеет смысла, если вы включаете другие функции данных.
Других решений пока нет …