SQL 查询 - 多个日期范围
Posted
技术标签:
【中文标题】SQL 查询 - 多个日期范围【英文标题】:SQL Query-Multiple date ranges 【发布时间】:2016-03-03 15:49:31 【问题描述】:我想通过提供多个日期范围从数据库中获取一些数据。例如,在 2 月,我想按以下顺序从表中获取每周报告:2 月 1 日至 07 日、2 月 7 日至 14 日、2 月 14 日至 21 日、2 月 21 日至 28 日和 2 月 28 日至 3 月 1 日。在 DB 中,记录存储在每日明智而不是每周明智。我想每周将其聚类并计算总和然后显示结果。如果你知道这个案例,请帮助我。
要获得清晰的视图,请考虑 3 个表格及其列。
Table A:id,timestamp (comment-data is inserted daily)
Table B:id,fruits
Table C:id,fruits_type
结果:
fruits_type count(id) timestamp
apple 3 01-02-2016 to 07-02-2016
orange 5 01-02-2016 to 07-02-2016
pineapple 8 01-02-2016 to 07-02-2016
apple 4 07-02-2016 to 14-02-2016
orange 5 07-02-2016 to 14-02-2016
条件:id 应在 3 个表中匹配;通过按 fruits_type 提供分组来获取数据,并且时间戳应按周计算。
如果你知道,请帮忙
【问题讨论】:
请使用相关表格结构、一些示例数据和所需结果编辑您的问题。 您对每周计算的通用解决方案感兴趣还是只针对特定日期感兴趣? 对于清晰的视图,请考虑 3 个表及其列。表 A:id,timestamp (每天插入评论数据) 表 B:id,fruits 表 C:id,fruits_type 结果:fruits_type count(id) timestamp apple 3 01-02-2016 to 07-02-2016 orange 5 01 -02-2016 至 07-02-2016 菠萝 8 01-02-2016 至 07-02-2016 苹果 4 07-02-2016 至 14-02-2016 橙子 5 07-02-2016 至 14-02-2016 条件:id 应该在 3 个表之间匹配;通过按 fruits_type 和时间戳提供分组来获取数据应该是每周一次。如果您知道这一点,请提供帮助。 【参考方案1】:要获得两个日期之间所有值的总和,您可以这样做:
SELECT SUM(Column1)
FROM Table1
WHERE Date1 BETWEEN '2/1/2016' AND Date1 <'2/7/2016'
如果您想让它更灵活并让查询获得上周的总和,您可以使用 DATEADD 函数延迟一周:
SELECT SUM(Column1)
FROM Table1
WHERE Date1 BETWEEN DATEADD(week, -1, GETDATE()) AND Date1 < GETDATE()
如果您希望结果集包含每周的一行,您可以使用 UNION 来合并查询。
【讨论】:
以上是关于SQL 查询 - 多个日期范围的主要内容,如果未能解决你的问题,请参考以下文章
尽量不在 SQL 查询中硬编码日期范围(Python、SQL 服务器)