Mysql

Mysql查詢以查找過去7天中每一天的最後一個條目

  • September 18, 2019

我有一個表,其中包含時間戳和每行的數字。每天 24 小時,每刻鐘每 15 分鐘記錄一次此數據,但有時確實會失去或延遲。我希望能夠提取過去 7 天結束時的數據,包括今天的最新日誌。我有兩個不同的查詢幾乎可以實現這一點,但並不完全:

SELECT * 
FROM WaterDepth 
WHERE (date >= DATE(NOW()) - INTERVAL 7 DAY) AND (HOUR(date)+MINUTE(date) = 68) 
ORDER BY date ASC LIMIT 7

這會在 23:45 擷取過去 7 天,但會錯過任何在 23:45 準確沒有條目且錯過今天的日子。

SELECT a1.* 
FROM WaterDepth a1 
INNER JOIN (SELECT max(date) as max 
           FROM WaterDepth 
           GROUP BY date(date)) a2 ON a1.date = a2.max

這將擷取每天的最後一個條目,無論今天是什麼時間,包括今天,但我不確定如何將其限制為最後 7 天。所以我想我正在尋找兩者的混合體。

提前致謝

SELECT a1.* 
FROM WaterDepth a1 
INNER JOIN ( SELECT MAX(`date`) as `max` 
            FROM WaterDepth
            WHERE `date` >= CURRENT_DATE - INTERVAL 7 DAY 
                -- or 6 day? 7 day gives 8 different dates...
                -- or today record not needed? if so add
                -- AND `date` < CURRENT_DATE
            GROUP BY DATE(`date`) ) a2 ON a1.`date` = a2.`max`

引用自:https://dba.stackexchange.com/questions/249051