Я создал запрос ранжирования, который заказывает по точкам, а затем, если его ничья он заказывает по дате создания. Проблема в том, что когда я использую дату для заказа ничьей, она становится испорченной.Порядок SQL, поддерживающий переменный порядок
Это было то, что я был первым:
SELECT
@rownum := @rownum + 1 AS rank,
sticker_id,
total_shared,
total_liked,
total_used,
total_shared+total_liked+total_used AS points,
stickers.date
FROM(
SELECT
sticker_id,
SUM(if(event_id = 1, 4, 0)) AS total_shared,
SUM(if(event_id = 2, 2, 0)) AS total_liked,
SUM(if(event_id = 3, 6, 0)) AS total_used
FROM stickers_stats
WHERE timestamp LIKE '2015-09%'
GROUP BY sticker_id
) AS ranks
JOIN (SELECT @rownum := 0) r
INNER JOIN stickers
ON ranks.sticker_id = stickers.id
ORDER BY points DESC
РЕЗУЛЬТАТ:
Это было то, что я получил после того, как:
SELECT
@rownum := @rownum + 1 AS rank,
sticker_id,
total_shared,
total_liked,
total_used,
total_shared+total_liked+total_used AS points,
stickers.date
FROM(
SELECT
sticker_id,
SUM(if(event_id = 1, 4, 0)) AS total_shared,
SUM(if(event_id = 2, 2, 0)) AS total_liked,
SUM(if(event_id = 3, 6, 0)) AS total_used
FROM stickers_stats
WHERE timestamp LIKE '2015-09%'
GROUP BY sticker_id
) AS ranks
JOIN (SELECT @rownum := 0) r
INNER JOIN stickers
ON ranks.sticker_id = stickers.id
ORDER BY points DESC, stickers.date ASC
Я попытался изменить порядок отображения полей и всего, но я не могу найти решение. Как мне заказать по points
и stickers.date
с новыми позициями?
Спасибо за ваш ответ, он мне очень помог – rafamds