我有一个只包含日期数据的表,我想计算数据在同一个月的次数,对于这个问题,它已经完成了,现在我得到了一个新的问题,就是缺少的月份,这是因为没有该月份的数据。现在我想添加默认值为0的空月份,即使该月份不在表中。有人能根据我的问题帮我吗?
这是我的资料
start_date |end_date
------------------------
2018-10-01 |2018-10-02
2018-01-04 |2018-02-04
2018-08-01 |2018-10-01
这是我的问题
select month(month_table) as month_table
, sum(cstart) as cstart
, sum(cend) as cend
from
(
(select `start_date` as month_table
, 1 as cstart
, 0 as cend
from newdata
)
union all
( select `end_date`
, 0
, 1
from newdata
)
) dd
group
by monthname(month_table)
, month(month_table)
order
by month(month_table)
结果是
month_table|cstart|cend
1 | 1 | 0
2 | 0 | 1
8 | 1 | 0
10 | 1 | 2
我想添加新的查询,这样我的结果
month_table|cstart|cend
1 | 1 | 0
2 | 0 | 1
3 | 0 | 0
4 | 0 | 0
5 | 0 | 0
6 | 0 | 0
7 | 0 | 0
8 | 1 | 0
9 | 0 | 0
10 | 1 | 2
11 | 0 | 0
12 | 0 | 0
这是我的小提琴http://sqlfiddle.com/#!9/c18b5f/3/0型
2条答案
按热度按时间7hiiyaii1#
这应该是这个问题的答案:
根据您在评论中的请求,我更改了代码(现在代码没有错误,月份号更改为月份名称)
我希望它完成!
h7wcgrx32#
你需要一张满月的table。您可以使用
UNION ALL
. 然后左键将count子查询联接到该表。