对于开始使用更高级的SQL查询的人来说,有什么好的解释语句和理解其背后逻辑的技巧?
例如,在提取最近7天的数据以进行可视化时:
case when `date` >= SUBDATE(`max_date`, interval 7 day) and
`date` <= `max_date`
then 'Yes'
else 'No'
end
为什么它需要“和date
”?大多数在线示例都没有此内容。为了清楚地了解每个元素如何影响语句,如何将其分解?
谢谢!
答案 0 :(得分:0)
这个评论太长了。
您的代码正在检查数据中最大值的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
代表发生的事情,则它们必然存在于过去,因此不需要第二次比较。