gpt4 book ai didi

sql - 具有日期范围的 GROUP BY

转载 作者:行者123 更新时间:2023-11-29 02:36:01 25 4
gpt4 key购买 nike

我有一个包含 4 列的表格,idStream 是文本、Duration (int) 和 Timestamp(日期时间)。每当有人在我的网站上播放特定的音频流时,都会插入一行。 Stream 是名称,Duration 是他们收听的时间(以秒为单位)。我目前正在使用以下查询来计算一年中每周的总收听时间:

SELECT YEARWEEK(`Timestamp`), (SUM(`Duration`)/60/60) FROM logs_main
WHERE `Stream`="asdf" GROUP BY YEARWEEK(`Timestamp`);

这符合我的预期...提供了一年中每周的总收听时间。

但是,我想构建一个查询,其中我有数周的结果行,但可能没有任何数据。例如,如果 2006 年的第 26 周没有属于该周的行,那么我希望 SUM 结果为 0。

这有可能吗?也许通过 JOIN 以某种方式在日期范围内?

最佳答案

尝试过一个真正的老派解决方案是设置另一个表,其中包含一组日期范围,您可以在外部加入这些日期范围以进行分组(因为在另一个表中,所有周都包含开始/结束日期)。

在这种情况下,您可以使用一个包含 YEARWEEK 值的表格:

201100
201101
201102
201103
201104

下面是一条sql语句的草图:

SELECT year_weeks.yearweek , (SUM(`Duration`)/60/60) 

FROM year_weeks LEFT OUTER JOIN logs_main
ON year_weeks.yearweek = logs_main.YEARWEEK(`Timestamp`)

WHERE `Stream`="asdf" GROUP BY year_weeks.yearweek;

关于sql - 具有日期范围的 GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5033842/

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