我有一个表中的数据,我可能有也可能没有每天的记录。我需要获得最近6周的数据,而每周只需要最后一条记录。如何获得每周在mysql中的最后一条记录
假设如果今天是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年3月23日11时二十分三十秒
2017年3月23日10点40分21秒
2017-03- 21 09:58:42
2017-03-03 15:02:20
2017年3月2日14时41分49秒
2017年2月23日10点59分26秒
2017年2月22日15时59分53秒
2017年2月21日11 :08:57
2017年2月21日10时43分24秒
2017年2月18日1点37分33秒
2017年2月11日1时38分29秒
输出:
(第一周)2017年2月11日 - 2017年2月17日= 2017年2月11日1点38分29秒
(第二周)2017年2月18日 - 2017年2月24日= 2017年2月23日10点59分26秒
(第三周)2017年2月25日 - 2017年3月3日= 2017年3月3日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
你的意思是subtrac从现在开始到6日,这将是第一周后退的开始?只是包括一个样本数据在这里和预期的结果 –
你在工作MYSQL或SQL? –
写一个选择查询之间的条件,如选择*从表where DATEDIFF(GETDATE()-6,'DAYS')和GETDATE()之间col_Date() –