【发布时间】:2022-01-19 12:20:29
【问题描述】:
我正在尝试根据日期间隔和订单总数创建直方图,但我很难通过 SQL 对其进行分类。
下面是一个简化的表格
| customer_id | Date | count_orders |
|---|---|---|
| 1 | 01-01-2020 | 5 |
| 1 | 01-13-2020 | 26 |
| 1 | 02-06-2020 | 11 |
| 2 | 01-17-2020 | 9 |
| 3 | 02-04-2020 | 13 |
| 3 | 03-29-2020 | 24 |
| 4 | 04-05-2020 | 1 |
| 5 | 02-23-2020 | 10 |
| 6 | 03-15-2020 | 7 |
| 6 | 04-18-2020 | 32 |
| ... | ... | ... |
我想把它分成 20 天的间隔,但我唯一能想到的就是做一个
SUM(CASE WHEN Date BETWEEN <interval1_startdate> AND <interval1_enddate> ...)
每个间隔的方法如果用于实际数据(包含数百万行)是相当累人的。所以我需要帮助自动化分箱部分。
期望的输出要么是
1)
| interval | total_count |
|---|---|
| 01-01-2020 - 01-20-2020 | 31 |
| 01-21-2020 - 02-10-2020 | 24 |
| 02-10-2020 - 03-01-2020 | 10 |
| ... | ... |
或 2)
| start | end | total_count |
|---|---|---|
| 01-01-2020 | 01-20-2020 | 31 |
| 01-21-2020 | 02-10-2020 | 24 |
| 02-10-2020 | 03-01-2020 | 10 |
| ... | ... | ... |
你有什么想法吗?
【问题讨论】:
-
那么,对于您的样本数据,您所追求的结果是什么?
-
“group by”子句有什么问题?类似于 (PostgreSQL) GROUP BY round(extract('epoch' from Date) / 1.728.000)?您使用的是哪个 DBMS?
-
“你使用的是哪个 DBMS?” 他们的 OP 已经明确标记了 [sql-server] @aKiRa ...
-
请注意,结果中的第一个间隔包含 20 天(如果包括两个边界)和第二个 - 21 天。第一个似乎缺少总和中的
2 01-17-2020 9行。
标签: sql sql-server presto