gpt4 book ai didi

sql - Postgresql COALESCE 没有设置默认值

转载 作者:行者123 更新时间:2023-11-29 12:32:43 26 4
gpt4 key购买 nike

我有两个表:

tcars

 id  |         name        |  car_price 
----|---------------------|------------
1 |First_car_name | 1000
2 |Second_car_name | 1200

tcar_optionals

 id | id_car   | spec |  opt_included   |price
----|----------|------|-------------------------
1 | 2 |Spec1 | true | 500
2 | 2 |Spec2 | true | 100
3 | 2 |Spec3 | false | 500
4 | 2 |Spec4 | true | 0
5 | 1 |Spec5 | false | 500
6 | 1 |Spec6 | true | 0

以及以下查询:

select t1.id, coalesce(t1.car_price, 0)+ coalesce(sum(t2.price), 0) as total_price
from tcars t1
left join tcar_optionals t2 on t2.id_car = t1.id
where t2.opt_included and t2.price>0 and t1.id=?
group by t1.id, t1.car_price

它返回来自 tcars 的 id 和 total_price(car_price+price of included optionals that have price >0)。

例子:

t1.id=2 返回:

 id | total_price
----|------------
2 | 1800

当我没有包含价格>0 的可选项时,例如 t1.id = 1,就会出现问题。

它返回的内容:

 id | total_price
----|------------

如果不包含价格>0 的选项,我需要的是只返回 t1.car_price 作为 total_price:

 id | total_price
----|------------
1 | 1000

有人可以帮我解决这个问题吗?

最佳答案

您应该首先在第二个表上加入具有所有条件的表,并从这个(加入的)结果中聚合值,例如:

select id, coalesce(car_price, 0)+ coalesce(sum(price), 0) total_price
from tcars
left join tcar_optionals on id = id_car and spec_included
-- where id = 1
group by id, car_price

关于sql - Postgresql COALESCE 没有设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39510289/

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