【发布时间】:2015-11-05 10:20:48
【问题描述】:
我已经问过一个类似的问题,但我似乎仍然无法理解它。我的 sql 数据库中有一个 device_create_date 列
2015-07-14 12:35:19
2015-07-15 12:45:37
2015-07-15 12:45:37
2015-07-16 12:35:37
2015-08-14 10:35:21
2015-08-14 12:15:36
我以周为单位汇总这些日期值,但在周之间存在缺失值,我希望这些值恰好等于 0,以便我可以将它们与 Excel 工作表中的其他指标进行比较。我创建了一个虚拟表“日期”来连接这些值,以便选择在没有值的周返回 0。
这是我使用的查询,
select date.year, week(device.device_create_date), count(*)
from device
join date
on date.week_of_year=week(device.device_create_date)
where device.id_customer = 1
group by device.year, date.WEEK_OF_YEAR
order by device.year, date.week_of_year;
这是我回来的,
2010 26 7252
2010 31 3108
2010 45 7203
2010 1 9324
2010 2 7252
2010 3 2072
这是我希望它还给我的东西;
2010 1 9324
2010 2 7252
2010 3 2072
2010 4 0
2010 5 0
2010 6 0
etc
顺便说一句,这些值似乎也与数据库中的计数不匹配,所以我有点知道我做错了,但我对此并不擅长,因此我们将不胜感激任何帮助和指导。
提前谢谢你!!
【问题讨论】:
-
我们需要
device的结构.. -
在这种情况下使用右连接,而不是内连接。另外,如果您有多年的数据,那么您需要在日期表中使用年和周并同时加入。
标签: mysql gaps-and-islands week-number