2012-07-24 94 views
0

我通過將每小時描述這些項目的記錄插入爲cron作業來追蹤一些項目。爲每7天選擇最大值

我有

steamid(int), 
eventid(auto_increment), 
itemid(int), 
value(int), 
time(unix format). 

我使用的是每小時的統計,生成圖表,顯示24小時的概況表。

現在我試圖生成一個7天的歷史視圖。

如何選擇最近7天每天發生的最大值?或者,如果這更容易,我怎麼可能在過去7天內選擇每天的第一個或最後一個條目?

在此先感謝。

回答

3
SELECT DATE(FROM_UNIXTIME(time)) AS daygroup, 
     MAX(value) AS max_value, 
     MIN(value) AS min_value 
FROM  tbl 
WHERE time >= UNIX_TIMESTAMP(CURDATE() - INTERVAL 7 DAY) 
GROUP BY daygroup 

這將得到在過去7天內每天的最小值和最大值value

編輯:更新解決方案,使整個行的數據:

SELECT a.* 
FROM tbl a 
INNER JOIN 
(
    SELECT DATE(FROM_UNIXTIME(time)) AS daygroup, 
      MAX(value) AS max_value 
    FROM  tbl 
    WHERE time >= UNIX_TIMESTAMP(CURDATE() - INTERVAL 7 DAY) 
    GROUP BY daygroup 
) b ON DATE(FROM_UNIXTIME(a.time)) = b.daygroup AND a.value = b.max_value 
+0

如何困難將是改變也檢索與最大值的整行呢? – geogaddi 2012-07-25 00:36:54

+0

@geogaddi,查看更新的解決方案。 – 2012-07-25 01:39:53

+1

我只是想讓你知道,這是現在的SQL色情。這很熱。 – geogaddi 2012-07-25 02:46:41