我有一个视图,它查询销售数据并将其汇总到一个简化的表中,该表按每个地点对净销售额(net_sales)进行求和。然而,我遇到的问题是当存在凌晨后的销售记录时。我的代码是按照日期来进行分组的,因此任何在午夜之后发生的销售都被错误地归到了第二天。
以下是当前使用的SQL查询:
SELECT r.name AS store,
r.id,
date(se.date) AS date,
c.dow, -- 星期几
c.week, -- 周数
c.period, -- 时期
c.year,
sum(se.netsales) AS net_sales,
sum(se.numberofguests) AS guest_count
FROM sales_employee se
JOIN restaurants r ON r.locationid::text = se.location
JOIN calendar c ON c.date = date(se.date)
GROUP BY r.name, r.id, (date(se.date)), c.dow, c.week, c.period, c.year
ORDER BY (date(se.date)) DESC, r.name;
在sales_employee
表中还有一列名为orderhour
的大整数类型列,其取值范围从0至23,表示订单时间。由于系统在凌晨4点关闭,我现在需要做的是收集从orderhour
为4开始直到3的所有时段的销售,并将orderhour
为0至3时段的销售数据归入前一天。请问这个需求是否可以实现?