我已經在這個幾個小時,無濟於事,把我的頭髮拉出來。Mysql使用從min時間戳中選擇的行減去值,按id編組
編輯:林希望通過使用從1天前相同的數據來計算每個用戶
目前我正在採取行最大的「收穫」來計算overall_exp柱之間的差別,然後選擇1天前的基於行的第一行時間戳然後減去從2行,以便通過該結果對overall_exp列,而由USER_ID分組
SQL小提琴:http://sqlfiddle.com/#!2/501c8
這是我現在有,但是邏輯是完全錯誤的,所以我拉0結果
SELECT rsn, ts.timestamp, @original_ts := SUBDATE(ts.timestamp, INTERVAL 1 DAY), ts.overall_exp, ts.overall_exp - previous.overall_exp AS gained_exp
FROM tracker AS ts
INNER JOIN (
SELECT user_id, MIN(TIMESTAMP) , overall_exp
FROM tracker
WHERE TIMESTAMP >= @original_ts
GROUP BY user_id
) previous
ON ts.user_id = previous.user_id
JOIN users
ON ts.user_id = users.id
GROUP BY ts.user_id
ORDER BY gained_exp DESC
SQLFiddle中的所有示例數據均爲同一天(2013年5月11日),因此無論您對其執行哪種查詢,在任何給定行的時間戳之前的某一天,都不會得到任何行。另外,這還遠遠不清楚**你試圖達到什麼樣的目標 - 你現有的問題只描述**你試圖達到的目標。 – 2013-05-11 15:05:44
已更新的OP和SQLFiddle – Wader 2013-05-11 15:22:55
謝謝,這很清楚,但它仍然有點不清楚 - 您是否希望每位用戶每天有一行,如果有的話,您希望從哪一天哪個時間戳與前一天的哪個時間戳進行比較?或者,您是否希望結果集中的一行記錄在「tracker」中的每一行中,將每一行中的日期和時間與前24小時內的最早日期和時間進行比較(這似乎是發佈的查詢背後的邏輯) ?或者是其他東西? – 2013-05-11 15:35:20