mysql - 将周末的计数总和滚动到星期一的计数
问题描述
我正在为一周中的每一天提取发货计数。由于该操作在周末是自动化的,我需要将这些货物的数量计入周一的数量。
我从简单的查询开始:
SELECT date(im.Import_date_time) AS 'Date',
COUNT(im.Tracking_Number) AS 'Imports'
FROM invoice_master im
WHERE im.Import_date_time >= '2019-01-07'
GROUP BY date(im.Import_date_time)
我试图添加:
CASE
WHEN weekday(*) IN (5,6,0) THEN SUM(*)
ELSE COUNT(*)
END
AS 'Shipments'
然后我在 WHEN 子句中尝试了 COUNT。这些都没有奏效——语法错误。
我还尝试添加一个子查询,我不再有查询,它只是给了我与初始查询相同的结果。
使用子查询和案例我得到了与初始查询相同的结果。
我的基本查询得到了明显的结果:
日期导入
2019 年 1 月 7 日 5432
2019 年 1 月 8 日 18434
2019 年 1 月 9 日 4603
1/10/2019 1916
2019 年 1 月 11 日 2287
2019 年 1 月 12 日 90
2019 年 1 月 13 日 3091
2019 年 1 月 14 日 6915
我需要:
日期导入
2019 年 1 月 7 日 5432
2019 年 1 月 8 日 18434
2019 年 1 月 9 日 4603
1/10/2019 1916
2019 年 1 月 11 日 2287
2019 年 1 月 14 日 10096
解决方案
必要时使用case
表达式添加偏移量:
SELECT (case when dayofweek(im.Import_date_time) in (2, 3, 4, 5, 6)
then date(im.Import_date_time)
when dayofweek(im.Import_date_time) = 1
then date(im.Import_date_time) + interval 1 day
when dayofweek(im.Import_date_time) = 7
then date(im.Import_date_time) + interval 2 day
end) as dte
COUNT(*) AS Imports
FROM invoice_master im
WHERE im.Import_date_time >= '2019-01-07'
GROUP BY dte;
推荐阅读
- hana - 有没有办法通过 SQL 转换的输出运行循环?
- mysql - 除了别名列之外,CTE 中的选项列表还使用什么?
- python - 随机的
- html - How to enter Carriage Return in XSL
- ios - 我如何知道用户是否将他们的卡添加到 iPhone 钱包或 Apple Watch 钱包?
- regex - 正则表达式与我的字符串中的所有内容都不匹配
- javascript - 如何将ajax获取请求数据显示到html?
- javascript - 如何在 js 脚本中创建一些断点来调试它
- java - java Xposed中的findAndHookMethod代码是错误的。帮助!!(NoSuchMethodError)
- javascript - jQuery在活动元素上切换手风琴