作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在处理 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/
我是一名优秀的程序员,十分优秀!