sql - 如何在sql中汇总动态期间的信息?
问题描述
我有一张订单表和以下字段:
create table orders2 (
orderID int,
customerID int,
date DateTime,
amount int)
engine=Memory;
每个客户每天可以下 0 个或多个订单。我需要创建一个 SQL 查询,该查询将为每个客户显示他/她在从客户下订单之日起的 3 天内完成了多少订单。
因此,对于每个客户,查询应该检测第一个订单的日期,然后计算从第一个日期起 3 天后的日期,然后过滤行以仅接受日期在给定范围内的订单,然后执行该时间段内的订单计数 (orderID)。目前,我只能检测到每个客户的第一个订单的日期。
SELECT
O.customerID,
O.date AS first_day,
COUNT(O.orderID) AS first_day_orders_num,
SUM(O.amount) AS first_day_amount
FROM orders2 AS O
INNER JOIN
(
SELECT
customerID,
MIN(date) AS first_date
FROM orders2
GROUP BY customerID
) AS I ON (O.customerID = I.customerID) AND (O.date = I.first_date)
GROUP BY
O.customerID,
O.date
解决方案
我真的不明白你需要什么结果。可能它可以使用数组来解决。
这是使用 vanilla sql 的解决方案
select customerID, min(first_date), sum(num_orders_per_day)
from (
select customerID, date, min(date) first_date, count() num_orders_per_day
from orders2
group by customerID, date
having date <= first_date + interval 3 days
)
group by customerID
推荐阅读
- flutter - 如何组织一个包含多个应用(Android、iOS 和 Web)的 Flutter 项目?
- clojure - Clojure:定期轮询数据库 - 带有超时通道的 core.async VS 带有睡眠的香草递归线程?
- delphi - Delphi/FMX:如何在所有先前添加的顶部对齐组件下添加一个动态创建的顶部对齐组件,而不是从顶部第二个?
- php - 在 wordpress 中创建自定义小部件
- json - 如何反序列化包含@@ with scala'的json字符串
- r - 如何使用数据框提取 summary() 的核心值?
- javascript - 使用 doc().set-Firebase 函数的文档中数组的动态名称
- python-3.x - 拉伸子图 Matplotlib
- r - glm 的系数
- python - 如何将任意位置的对象正确插入现有查询集并按顺序更新顺序?