sql - SQL Count 按天分组
问题描述
我有兴趣查看从一些示例数据中获取包裹所需的不同长度。我目前正在使用此代码:
SELECT COUNT(*)
FROM orders_table
WHERE DATEDIFF(day, order_date, delivered_date) = 2
AND order_date BETWEEN '2021-01-01' AND '2021-01-31'
我想获得不同长度的交付计数,在上面的示例中,它查看了需要 2 天的交付数量。然而,这非常耗时,因为我需要在不同的天数内不断更改 where 语句并重新运行代码,是否有办法对其进行分组并按月分组?所以输出看起来像这样:
January February March April
2D 3D 4D 2D 3D 4D 2D 3D 4D 2D 3D 4D
--------------------------------------------------------------------
12 7 32 21 53 33 8 22 41 9 44 30
解决方案
这并不完全以您想要的格式提供输出,但结果似乎正是您想要的。通过 DATEDIFF 函数进行分组:
SELECT DATEDIFF(day, order_date, delivered_date) AS Date_Diff, COUNT(*)
FROM orders_table
WHERE order_date BETWEEN '2021-01-01' AND '2021-01-31'
GROUP BY DATEDIFF(day, order_date, delivered_date)
如果您只需要特定的 datediff 天数(例如,如果您想查看订单和交付日期仅相差 2、3 和 4 天的订单),则只需在过滤器中添加所需的数字:
WHERE DATEDIFF(day, order_date, delivered_date) IN (2, 3, 4)
推荐阅读
- deep-learning - CNN 中的数据流
- java - 带有 return 语句的方法不返回任何内容
- sql - 如何使用 SQLAlchemy 选择 PostgreSQL 系统列?
- apify - 如何使用 PhantonJS Scraper 在 Pagefunction 中访问 Apify SDK
- javascript - 使用反应导航的状态栏颜色
- docker - 如何获取被杀死的容器的日志
- flurry - 在 Flurry Analytics 中使用 userID 跟踪用户
- rust - 比较 Cell 内部引用的非复制枚举
- azure - 从 Dynamics 365 插件访问非 Azure Web API(本地托管在 IIS 中)
- entity-framework-core - Entityframework Core Group Join 第三个参数不填充数据成员