gpt4 book ai didi

sql - CASE WHEN NOT 没有产生正确的结果?

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

我目前正在处理 titanic.sql 数据集,我需要回答的一个问题是计算第二类女性的生存几率。

(我相信计算赔率是#where case is true/#where case not true)

我有两个不同的 sql 语句,它们产生不同的结果。我假设 CASE WHEN NOT 不起作用...

我可能不明白其中的逻辑,但有人可以解释一下吗?

SELECT 
SUM(CASE WHEN sex='female' AND class='2nd' AND survived=1 THEN 1.0 ELSE 0.0 END) /
CAST(
SUM(CASE WHEN NOT sex='female' AND NOT class='2nd' AND NOT survived=1
THEN 1.0 ELSE 0.0 END)
AS FLOAT)
AS odds_second_fem_surive FROM passengers;



SELECT
SUM(CASE WHEN sex='female' AND class='2nd' AND survived=1 THEN 1.0 ELSE 0.0 END) /
CAST( COUNT(*) - (CASE WHEN sex='female' AND class='2nd' AND survived=1 THEN 1.0 ELSE 0.0 END)
AS FLOAT)
AS odds_second_fem_surive____ FROM passengers;

最佳答案

您缺少一些 bool 逻辑知识。

负数:

sex = 'female' AND class = '2nd'

是:

not (sex = 'female' AND class = '2nd')

这也可以用这两种等价的方式之一来表达:

not sex = 'female' or not class = '2nd'
sex <> 'female' or not class <> '2nd'

这不同于:

not sex = 'female' and not class = '2nd'

注意:如果列可以是null,这些表达式会稍微复杂一些。

关于sql - CASE WHEN NOT 没有产生正确的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56606960/

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