【发布时间】:2019-07-03 22:57:45
【问题描述】:
我有一个带有时间戳日期列的 orders 表。 我想计算每个日期下的订单数量,包括没有下订单的日期为零,如下所示:
TotalOrders------ 日期
12----------------- 01/02/2019
0----------------- 02/02/2019
7-------------------- 03/02/2019
0----------------- 04/02/2019
4------- 05/02/2019
0----------------- 06/02/2019
我在这里搜索并得到了一个解决方案:
选择 COUNT(o.OrderID) AS TotalOrders, a.date
from (select date_add('2019-07-01', INTERVAL n5.num*10000+n4.num*1000+n3.num*100+n2.num*10+n1.num DAY ) 作为日期
from (select 0 as num union all select 1 union all select 2 union
全部选择 3 联合全部选择 4 联合全部选择 5 联合全部选择 6 联合全部选择 7 联合全部选择 8 联合全部 选择 9) n1,
(select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all 选择 5 联合全部 选择 6 联合全部 选择 7 联合全部 select 8 union all select 9) n2,
(select 0 as num union all 选择 1 联合全部 选择 2 联合全部 选择 3 联合全部 选择 4 联合全部 选择 5 联合全部 选择 6 联合全部 全选 7 联合全选 8 全联合全选 9) n3,
(select 0 as num union all select 1 union all select 2 union all select 3 联合全部选择 4 联合全部选择 5 联合全部选择 6
联合全部选择 7 联合全部选择 8 联合全部选择 9) n4,(select 0 as num union all select 1 union all select 2 union 全部 选择 3 联合 全部 选择 4 联合 全部 选择 5 联合 全部 选择 6 联合全部 选择 7 联合全部 选择 8 联合全部 选择 9) n5
) 一个
LEFT JOIN 订单 o ON MONTH(o.Date)= MONTH(a.date)
AND YEAR(o.Date) = YEAR(a.date) where MONTH(a.date) ='7' and
YEAR(a.date) = '2019' GROUP BY a.date order by a.date
编辑: 与 2019 年 7 月一样,总共下了 4 个订单,所以当我使用上述解决方案时,每个日期都会给我 4 个结果。相反,它应该显示相应日期的订单计数和无订单日期的零。但它为每个日期显示 4 个。请让我知道我在哪里做错了。我的订单表是:
订单(OrderID(p.k), Date, totalPrice, CustomerID)
【问题讨论】:
标签: mysql sql date timestamp left-join