MYSQL返回的零日期不存在,并计算具有特定日期的行数

问题描述 投票:0回答:1

我有一个名为calendar的表,其中只有一列(mydate DATE)。

MYDATE
2020-01-01
2020-01-02
2020-01-03

...

我还有一个名为交货的表,其中有三列(id PK,giorno DATE,total total FLOAT)

ID    GIORNO          TOTALE
1     2020-01-01      0.10
2     2020-01-01      5
3     2020-01-02      12
4     2020-01-12      5
5     2020-02-02      13.50

这是我想要获得的:

Day            Numbers of orders
2020-01-01     2
2020-01-02     1
2020-01-03     0
2020-01-04     0
2020-01-05     0
2020-01-06     0
2020-01-07     0
2020-01-08     0
2020-01-09     0
2020-01-10     0
2020-01-11     0
2020-01-12     1

...

我正在尝试查询:

SELECT c.mydate, IFNULL(d.totale, 0) value 
FROM delivery d
RIGHT JOIN calendar c
    ON ( c.mydate = d.giorno )
GROUP BY c.mydate 
ORDER BY c.mydate 
mysql mysql-workbench mysql-python
1个回答
1
投票
考虑:

select c.mydate, count(d.id) number_of_orders from calendar c left join delivery d on d.giorno = c.mydate group by c.mydate

这是通过将日历表与订单表左连接,然后按日期进行汇总,最后计算订单表中的匹配行数。
© www.soinside.com 2019 - 2024. All rights reserved.