gpt4 book ai didi

sql - 使用 generate_series 和 left join 查询时出现重复值?

转载 作者:行者123 更新时间:2023-11-29 13:11:37 24 4
gpt4 key购买 nike

我正在尝试计算特定日期不同表中的数据,但由于某种原因,我得到了错误的结果,它只是重复了另一个表中的计数。

如果您查看,那么在“items”表中,只有 1 个条目。但是,当通过 count() 计数时,我得到 5。

你能解释一下并帮助我解决这个问题吗?

数据:

create table views(id bigint, created_at timestamp);
create table items(id bigint, created_at timestamp);

insert into views(id, created_at) values
('1', '2018-12-28 22:46:35'),
('2', '2018-12-28 22:46:35'),
('3', '2018-12-28 22:46:35'),
('4', '2018-12-28 22:46:35'),
('5', '2018-12-28 22:46:35');

insert into items(id, created_at) values
('1', '2018-12-28 22:46:35');

查询:

select 
dates.d as day,
count(v.*) as views_count,
count(i.*) as items_count

from (
select d from generate_series('2018-12-01'::date, '2018-12-30', '1 day' ) as d
) as dates

left join views as v on v.created_at::date = dates.d
left join items as i on i.created_at::date = dates.d

group by day order by day desc;

DbFiddle.

最佳答案

count(<expression>)计算 <expression> 处的行数不是 NULL .

我想你想计算不同值的数量。如果是这样:

select dates.d as day,
count(distinct v.id) as views_count,
count(distinct i.id) as items_count

您还可以使用 v.*i.*作为参数,但是 id应该足够了。

关于sql - 使用 generate_series 和 left join 查询时出现重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53961382/

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