首页 > 数据库 > mysql教程 > 如何在SQL中高效统计某个日期范围内的记录?

如何在SQL中高效统计某个日期范围内的记录?

Barbara Streisand
发布: 2024-12-20 22:39:10
原创
417 人浏览过

How to Efficiently Count Records Within a Date Range in SQL?

计算两个日期之间的日期的记录计数

要计算多轴图表的日期范围内的记录数,我们必须克服原始查询中操作数类型不匹配的问题。为了解决这个问题,我们探索利用统计表或函数的替代方法。

一种高性能的解决方案涉及利用统计表或函数。 Itzik Ben-Gan 著名的计数函数可以按如下方式合并:

DECLARE @StartDate date = '2020-11-01', @EndDate date = '2021-02-22';

  WITH
    L0 AS ( SELECT 1 AS c 
            FROM (VALUES(1),(1),(1),(1),(1),(1),(1),(1),
                        (1),(1),(1),(1),(1),(1),(1),(1)) AS D(c) ),
    L1 AS ( SELECT 1 AS c FROM L0 AS A CROSS JOIN L0 AS B ),
    L2 AS ( SELECT 1 AS c FROM L1 AS A CROSS JOIN L1 AS B ),
    Nums AS ( SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rownum
              FROM L2 )
    Date_Range_T (d_range) AS (
      SELECT TOP(DATEDIFF(day, @StartDate, @EndDate) + 1)
          DATEADD(day, rownum - 1, @StartDate) AS d_range,
          DATEADD(day, rownum, @StartDate) AS d_rangeNext
      FROM Nums
    )
SELECT d_range, COUNT(Id) AS Total 
FROM Date_Range_T 
LEFT JOIN tbl_Support_Requests R
    ON R.CreatedDate >= T.d_range AND R.CreatedDate < T.d_rangeNext
GROUP BY d_range
ORDER BY d_range ASC
登录后复制

此方法生成指定时间段的日期范围表,然后在与 tbl_Support_Requests 表的左连接中使用该表来对其中的记录进行计数每个日期范围。

以上是如何在SQL中高效统计某个日期范围内的记录?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板