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"
  • 相关阅读:
    liunx知识点滴积累(1)
    Regsvr32命令的使用
    QTP知识点滴积累
    LoadRunner的Apache的监控
    CMM和过程改进的“妙语” 集锦
    Linux 性能调优的几种方法
    数据库学习笔录(转载)
    Windows性能管理解析
    使用NUnit在.Net编程中进行单元测试
    Google 工程师文化 互助篇
  • 原文地址:https://www.cnblogs.com/yfb918/p/10411726.html
Copyright © 2011-2022 走看看