【发布时间】:2022-10-13 00:11:30
【问题描述】:
我有两个“相同”的操作
(1)
SELECT ticket_type_name
, amount as 'original_amount'
, CASE ticket_type_name
WHEN ticket_type_name = 'General Admission - Friday'
and amount > 0 THEN amount / 400
END AS 'NewAmount'
from analytics.deleteme
(2)
select distinct ticket_type_name, amount, amount/400 AS NewAmount
from analytics.deleteme
where amount > 0
and ticket_type_name = 'General Admission - Friday'
第一条语句生成 NULL 值 第二条语句生成正确的值 1 (400/400)
我在最后添加了一个 ELSE 语句:
SELECT DISTINCT ticket_type_name
, amount as 'original_amount'
, CASE ticket_type_name
WHEN ticket_type_name = 'General Admission - Friday' and amount > 0 THEN amount / 400
else amount/575
END AS 'NewAmount'
from analytics.deleteme
where amount > 0
结果与应有的相反! GA 星期五应该是 400/400 = 1 其他一切,例如 GA 周末应该除以 575(=0.82,而不是 1.18!)
ticket_type_name, amount, NewAmount一般入场费 - 周五 400.0 0.69 一般入场 - 周末 475.0 1.18 普通入场 - 周六 375.0 0.93 儿童(12 至 14 岁)- 周末 100.0 0.25 儿童(12 至 14 岁) - 周六 50.0 0.125
【问题讨论】:
-
问题不清楚,没有提供样本数据(甚至 ddl)。
-
试试
CASE WHEN ticket_type_name = 'General Admission - Friday' and amount > 0 THEN amount / 400 else amount/575 END