gpt4 book ai didi

sql - Postgres复杂的SQL查询

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

我正在尝试通过 Postgres 创建查询。我有一个这样的表:

Date----------|Meter-----|------period-----|-----value
2017-05-23-----meter1 ---------- 1 ------------ 2.01
2017-05-23-----meter1 ---------- 3 ------------ 4.01
2017-05-23-----meter1 ---------- 4 ------------ 0.00

该表表示仪表读数。每天需要 48 个仪表读数。然而,有时由于某种原因,仪表读数可能无法通过,因此不会有记录。此外,仪表读数可能为 0.00。

我需要做的是生成一个序列,如果我在特定日期搜索任何给定仪表的仪表读数,它会给我这样的结果:

Period----Total
1 --- 2.01
2 --- null
3 --- 4.01
4 --- 0.00
.
.
.

即使没有记录也需要给我48个读数。我正在尝试从 JSON 响应填充谷歌图表,该图表接受空值但不接受“无”值。

感谢任何帮助。

最佳答案

您可以使用 generate_series生成号码列表和left join你的表格放在上面,并将缺失的句点显示为 null .

select g.val,t.value
from generate_series(1,48) g(val)
left join tbl on t.period=g.val and t.date = '2017-05-23' --change this value as required

如果表中的所有日期和仪表都需要它,cross join生成带有日期和计量的周期和 left join上表。

select dm.date,dm.meter,g.val,t.value
from generate_series(1,48) g(val)
cross join (select distinct date,meter from t) dm
left join t on t.period=g.val and t.date=dm.date and t.meter=dm.meter
where dm.date = date '2017-05-23' --change this value as required
and dm.meter='meter1' --change this value as required

关于sql - Postgres复杂的SQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44124107/

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