对于开始使用更高级 SQL 查询的人,有哪些解释语句和理解其背后逻辑的好技巧?
比如提取最近7天的数据进行可视化时:
case when `date` >= SUBDATE(`max_date`, interval 7 day) and
`date` <= `max_date`
then 'Yes'
else 'No'
end
为什么需要“和date
”?大多数在线示例都没有这个……如何分解它以便清楚地了解每个元素如何对语句做出贡献?
谢谢!
最佳答案
评论太长了。
您的代码正在检查数据中最大值 7 天内的日期。因为您知道最大日期,所以这些是等价的:
`date` >= SUBDATE(`max_date`, interval 7 day) and `date` <= `max_date`
`date` >= SUBDATE(`max_date`, interval 7 day)
第二个条件始终为真。当然,我假设 max_date
是 date
的最大值。如果不是,那么您需要对两者进行比较。
这与最近 7 天不同,大多数人会将其解释为相对于当前日期。那更像是:
case when `date` >= SUBDATE(curdate(), interval 7 day) and
`date` <= curdate()
then 'Yes'
else 'No'
end
(注意:对于一周,您可能需要 interval 6 day
,但我忽略了逻辑上的边界条件。)如果 date
表示的是发生过的,必然是过去的,所以不需要第二次比较。
关于mysql - 拆分 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52671173/