我創建了一個按點排序的排名查詢,然後如果它按創建日期排序。問題是,當我使用日期來訂購繪圖時,它會變得混亂。通過維護變量順序的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