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"
  • 相关阅读:
    mysql 优化20点
    java function
    设计模式 概览
    Linux安装java1.8并配置环境变量
    windows下一次执行多个sql文件
    mybatis查询结果为空时的返回值问题
    Java中Json与String互转
    SSM Service自动注入失败
    本地安装Mysql5.7过程中出现的一系列问题
    解决本地工具无法连接服务器上的mysql的问题
  • 原文地址:https://www.cnblogs.com/yfb918/p/10411726.html
Copyright © 2011-2022 走看看