gpt4 book ai didi

Mysql:按小时分组,无数据则为0

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

我有以下查询:

SELECT count(*) as 'totalCalls', HOUR(`end`) as 'Hour'
FROM callsDataTable
WHERE company IN (
SELECT number
FROM products
WHERE products.id IN (@_PRODUCTS))
AND YEAR(`end`) = @_YEAR AND MONTH(`end`) = @_MONTH
group by HOUR(`end`)

以上查询仅返回调用电话的时间:

totalCalls  Hour
2 0
1 2
4 7
98 8
325 9
629 10
824 13
665 15
678 16
665 17
606 18
89 22
5 23

所需的输出应该是所有时间,没有调用的地方应该是那个小时的 0 个调用,如下所示:

totalCalls  Hour
0 0
0 1
1 2
0 3
0 4
0 5
0 6
4 7
98 8
325 9
629 10
0 11
0 12
824 13
0 14
665 15
678 16
665 17
606 18
0 19
0 20
0 21
89 22
5 23

最佳答案

您需要一个Hour 表,然后对Hour_table 执行left Outer Join

这将确保返回所有小时。如果 callsDataTable 中不存在 hour,则计数将为 0

营业时间表

create table hours_table (hours int);

insert into hours_table values(0);
insert into hours_table values(1);
...
insert into hours_table values(23);

查询:

SELECT count(HOUR(`end`)) as 'totalCalls', HT.Hours as 'Hour'
FROM Hours_table HT left Outer join callsDataTable CD
on HT.Hours = HOUR(`end`)
WHERE company IN (
SELECT number
FROM products
WHERE products.id IN (@_PRODUCTS))
AND YEAR(`end`) = @_YEAR AND MONTH(`end`) = @_MONTH
group by HT.Hours

关于Mysql:按小时分组,无数据则为0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28262618/

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