gpt4 book ai didi

PostgreSQL 查看嵌入的 if 语句

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

在我的数据库中,对于没有 Reseller Ratings 评级的商店,他们仍然有一个条目,但有 -1.0 而不是 0.0 之间的数字10.0。以下查询导致 -10.00 显示在我的 View 中,这些商店的 -1.0。相反,我不希望在它的位置出现任何内容或 -,但我不太愿意在我的 View 中实现嵌入式 if 语句。这是我目前的看法。

CREATE VIEW myview AS
SELECT co_url_name AS company_url, score_combined AS stella_score, trunc(score*10, 2) AS bizrate_score,
(SELECT trunc("lifetimeRating"*10, 2)) AS resellerRating_score
FROM ss_profile_co AS s LEFT OUTER JOIN "resellerRatings_ratings" AS r
ON s.id = r.company_id
LEFT OUTER JOIN (SELECT * FROM bizrate_bizrate_ratings WHERE score_name = 'Overall rating') AS b
ON s.id = b.fk_co_id
ORDER BY co_url_name ASC;

(SELECT trunc("lifetimeRating"*10, 2)) AS resellerRating_score 行返回负数(或者,对于有效条目,将返回 之间的分数0.00100.00)。

显然,我可以简单地从导致此结果的数据库中删除这些条目,但无论如何,这一半是学习经验,一半是我无法控制的。

感谢您的帮助!

编辑:尝试嵌入 if 但并不意外地出现错误。

IF (SELECT trunc("lifetimeRating"*10, 2)) = -10.00 THEN NULL ELSE (SELECT trunc("lifetimeRating"*10, 2)) AS resellerRating_score

EDIT2:想通了。有问题的行如下:

(SELECT trunc("lifetimeRating"*10, 2) WHERE trunc("lifetimeRating"*10, 2) > 0) AS resellerrating_score

/永远的

最佳答案

可能看起来像这样:

CREATE VIEW myview AS
SELECT co_url_name AS company_url
,score_combined AS stella_score
,trunc(score * 10, 2) AS bizrate_score
,CASE WHEN "lifetimeRating" < 0
THEN NULL
ELSE trunc("lifetimeRating" * 10, 2)
END AS resellerRating_score
FROM ss_profile_co s
LEFT JOIN "resellerRatings_ratings" r ON r.company_id = s.id
LEFT JOIN bizrate_bizrate_ratings b ON b.score_name = 'Overall rating'
AND b.fk_co_id = s.id
ORDER BY co_url_name;

要点

  • 关于您的核心问题:没有 FROM 子句的子选择没有任何用处。我对此进行了简化,并改为使用 CASE 语句。

  • 我还将您的 LEFT JOIN 简化为 bizrate_bizrate_ratings。也不需要子选择。我将 WHERE 子句拉到 JOIN 条件中。更简单、更快捷。

  • 我建议不要使用 mixed case identifiers , 所以你永远不必使用双引号。 (这可能会使@Daniels 评论无效,因为 lifetimerating != "lifetimeRating"

关于PostgreSQL 查看嵌入的 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8729204/

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