我在表格中有数据,我可能会或可能没有每天的记录。我需要获取最近6周的数据,我每周只需要最后一次记录。
假如今天是24日,我需要从18日到24日和11日到17日获得最后一条记录,依此类推,直到6周。
此查询提供所有6周的记录,但我需要每周记录一次。
SELECT snap.created_at
FROM snapshots snap
WHERE snap.created_at > DATE_SUB(NOW(), INTERVAL 6 WEEK)
ORDER BY created_at DESC;
示例:
CREATED_AT
2017-03-23 11:20:30
2017-03-23 10:40:21
2017-03-21 09:58:42
2017-03-03 15:02:20
2017-03-02 14:41:49
2017-02-23 10:59:26
2017-02-22 15:59:53
2017-02-21 11:08:57
2017-02-21 10:43:24
2017-02-18 01:37:33
2017-02-11 01:38:29
输出:
(第1周)2017-02-11 - 2017-02-17 = 2017-02-11 01:38:29
(第2周)2017-02-18 - 2017-02-24 = 2017-02-23 10:59:26
(第3周)2017-02-25 - 2017-03-03 = 2017-03-03 15:02:20
(第4周)2017-03-04 - 2017-03-10 = 2017-03-03 15:02:20 (由于本周没有记录,需要显示上周的最新记录)
(第5周)2017-03-11 - 2017-03-17 = 2017-03-03 15:02:20 (由于本周没有记录,需要显示上周的最新记录)
(第6周)2017-03-18 - 2017-03-24 = 2017-03-23 11:20:30
答案 0 :(得分:0)
试试这个
select datepart(wk, datecolumn), max(datecolumn) from yourtable
where (datediff(wk,datecolumn,getdate())) < 6
group by datepart(wk, datecolumn)
order by 2 desc