zoukankan      html  css  js  c++  java
  • case when then else end用法

     
     
    case具有两种格式,简单case函数和case搜索函数
    case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略
    1、简单函数
    CASE sex
            WHEN '1' THEN '男'
            WHEN '2' THEN '女'
    ELSE '其他' END
     
    2、搜索函数
    CASE WHEN sex = '1' THEN '男'
            WHEN sex = '2' THEN '女'
    ELSE '其他' END
     
    CASE WHEN col_1 IN ( 'a', 'b') THEN '第一类'
            WHEN col_1 IN ('c')       THEN '第二类'
    ELSE'其他' END
     
    实例一:比如下列场景,给出一些国家以及对应的人口数据,根据这些国家的人口数据,统计亚洲和北美洲的人口数量
    --1、创建country表,包含两个字段country和population
    CREATE TABLE country1(country STRING,population int)
    CLUSTERED by(country) INTO 7 BUCKETS
    STORED AS ORC 
    tblproperties('transactional'='true');
    --2、数据
    BATCHINSERT INTO country1 batchvalues(
    values("中国",600),
    values("美国",100),
    values("加拿大",100),
    values("英国",200),
    values("法国",300),
    values("日本",250),
    values("德国",200),
    values("墨西哥",50),
    values("印度",250)
    );
    CREATE TABLE country(country STRING,population int);
    INSERT INTO TABLE country SELECT * FROM country1;
    SELECT * FROM country;
     
    --3、统计亚洲和北美洲人口数量
    SELECT sum(population) AS sum,
    (CASE country
    WHEN '中国' THEN '亚洲'
    WHEN '印度' THEN '亚洲'
    WHEN '日本' THEN '亚洲'
    WHEN '美国' THEN '北美洲'
    WHEN '加拿大' THEN '北美洲'
    WHEN '墨西哥' THEN '北美洲'
    ELSE '其他' END) continents
    FROM country
    GROUP BY CASE country
    WHEN '中国' THEN '亚洲'
    WHEN '印度' THEN '亚洲'
    WHEN '日本' THEN '亚洲'
    WHEN '美国' THEN '北美洲'
    WHEN '加拿大' THEN '北美洲'
    WHEN '墨西哥' THEN '北美洲'
    ELSE '其他' END;

    实例二:给出一些国家以及对应性别的人口数据。根据这些国家的人口数据,分别统计男性和女性的人口数量

    --1、创建国家表country2
    CREATE TABLE country2(country STRING,sex INT DEFAULT 1,population int);
    CREATE TABLE country3(country STRING,sex INT DEFAULT 1,population int)
    CLUSTERED by(country) INTO 7 BUCKETS
    STORED AS ORC 
    tblproperties('transactional'='true');
    BATCHINSERT INTO country3 batchvalues(
    values('中国',1,340),
    values('中国',2,260),
    values('美国',1,45),
    values('美国',2,55),
    values('加拿大',1,51),
    values('加拿大',2,49),
    values('英国',1,40),
    values('英国',2,60)
    );
    INSERT INTO TABLE country2 SELECT * FROM country3;
     
    --2、按照国家和性别进行分组,统计人口数量
    SELECT country,sum(
    CASE WHEN sex=1 THEN population ELSE 0 end
    ) AS boy,
    sum(
    CASE WHEN sex=2 THEN population ELSE 0 end
    ) AS girl
    FROM country2
    GROUP BY country;
     

    case when in.......

    "select CASE " +
    "WHEN areaName in('华北地区','东北地区') THEN 'A' " +
    "WHEN areaName in('华东地区','华中地区') THEN 'B' " +
    "WHEN areaName in('华南地区','西南地区') THEN 'C' " +
    "else 'D' end areaLevelName,areaName,productName,clickNum,if(extendInfo=1,'自营','第三方') " +
    "extendInfo from spark_base_data"
  • 相关阅读:
    echarts
    联合省选2021游记
    高维 FWT 学习笔记
    Unicode简介
    mac安装brew
    原生JS实现分页跳转
    Kubernetes Pod Probes 探针解析
    Kubernetes Secrets
    Kubernetes Container lifecycle hooks
    个人作业1——四则运算题目生成程序(基于java)
  • 原文地址:https://www.cnblogs.com/yfb918/p/10411726.html
Copyright © 2011-2022 走看看