目錄
注意事項
寫法一
寫法二
注意事項
case when then 多條件 注意點:
1、文法 case when 條件1(布爾表達式)then 結果1 when 條件2(布爾表達式) then 結果2 else 結果xx end
2、上面的标顔色的要注意,else子句表示都不符合時就填結果xx,else子句是可選的,可以不寫。
3、case when 必須以end結尾!勿忘!
寫法一
-- 勿忘end!
select substr(key,13,2),
case when birthday<'1968' then '50up'
when birthday<'1978' then '40-50'
when birthday<'1983' then '35-40'
when birthday<'1988' then '30-35'
when birthday<'1992' then '26-30'
when birthday<'1998' then '20-25'
else 'other'
end,
count(1)
from hiveTable
group by substr(key,13,2),
case when birthday<'1968' then '50up'
when birthday<'1978' then '40-50'
when birthday<'1983' then '35-40'
when birthday<'1988' then '30-35'
when birthday<'1992' then '26-30'
when birthday<'1998' then '20-25'
else 'other'
end
-- 勿忘end!
寫法二
-- 這種寫法某些資料庫不支援
SELECT
SUM(c.population) AS '人口',
CASE c.country
WHEN '中國' THEN '亞洲'
WHEN '南韓' THEN '亞洲'
WHEN '美國' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
ELSE '其他' END AS '洲'
FROM
country c
GROUP BY CASE c.country
WHEN '中國' THEN '亞洲'
WHEN '南韓' THEN '亞洲'
WHEN '美國' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
ELSE '其他' END;
總結
case when 必須以end結尾!勿忘!
建議使用第一種方式,雖然看似繁瑣,但便于了解且不易出錯。