Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将周末的计数总和滚动到周一';s计数_Mysql_Sql_Subquery - Fatal编程技术网

Mysql 将周末的计数总和滚动到周一';s计数

Mysql 将周末的计数总和滚动到周一';s计数,mysql,sql,subquery,Mysql,Sql,Subquery,我正在统计一周中每天的出货量。由于操作在周末自动进行,我需要将这些货物的数量计入周一的数量 我从简单的查询开始: 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_tim

我正在统计一周中每天的出货量。由于操作在周末自动进行,我需要将这些货物的数量计入周一的数量

我从简单的查询开始:

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。这些语法错误都没有一个一直有效

我还尝试添加了一个子查询,我不再需要这个查询了,它只给了我与初始查询相同的结果

同时使用子查询和case可以得到与初始查询相同的结果

我的基本查询得到了明显的结果:

日期导入

2019年1月7日5432

2019年1月8日18434

2019年1月9日4603

2019年10月1日1916

2019年11月1日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

2019年10月1日1916

2019年11月1日2287


2019年1月14日10096

必要时,使用
大小写
表达式添加偏移:

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;