gpt4 book ai didi

sql - 按周分组,如何得到空周?

转载 作者:IT王子 更新时间:2023-10-29 00:28:05 29 4
gpt4 key购买 nike

我有以下代码,它以周为单位对一些事件 (YYYY-MM-DD HH:MM:SS) 进行分组,例如“Y:2010 - Week: 50”。

SELECT DATE_FORMAT(date, 'Y:%X - Week:%V') AS regweek, COUNT(*) as number 

它运作良好,但我想返回所有周,即使那些没有放置事件的周也是如此。

如果第三周没有注册事件,此时我得到:

week 1: 10
week 2: 1
week 4: 2

我想得到:

week 1: 10
week 2: 1
week 3: 0
week 4: 2

最佳答案

SQL 无法返回某些表中不存在的行。为了获得您想要的效果,您需要一个表 Weeks (WeekNo INT),一年中每个可能的星期一行(IIRC,可能是 53 周或 54 周,具体取决于您的计算方式)。

然后,使用 OUTER JOIN 将此表连接到您的常规结果,以添加额外的周数。

SELECT DATE_FORMAT(date, 'Y:%X - Week:%V') AS regweek, COUNT(date) as number 
FROM YourTable RIGHT OUTER JOIN Weeks ON WEEK(YourTable.date) = Weeks.WeekNo

[更新]:注意 COUNT(date) 的用户而不是 COUNT(*)。将 COUNT 相加时,SQL 不会在日期列中包含 NULL 值。由于缺少的周中没有任何日期,因此这将正确地为您提供这些周的 0 个事件。

关于sql - 按周分组,如何得到空周?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4805560/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com