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"

case when then else end用法的更多相关文章

  1. 转载:SQL中的case when then else end用法

    SQL中的case when then else end用法 来源: http://www.cnblogs.com/prefect/p/5746624.html Case具有两种格式.简单Case函数 ...

  2. mysql学习记录,CASE WHEN THEN ELSE END用法

    记mysql,case when then else end用法 用法1:搜索函数 SELECT r.order_no, r.golds, r.pay_tool, , ) ) END AS price ...

  3. MYSQL中case when then else end 用法

    条件语句 delimiter \\CREATE PROCEDURE proc_if ()BEGIN      declare i int default 0;   if i = 1 THEN      ...

  4. mysql操作查询结果case when then else end用法举例

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex          WHEN '1' THEN '男'          WHEN '2' THEN ...

  5. case when then else end 用法

    前段时间做项目过程中制作报表时编写的sql需要用到的case when then else end,因此将case的用法总结一下吧. CASE命令有两种语句格式:语法形式1:CASE expressi ...

  6. oracle:case when 语句的区间用法

    在练习case when 语句时,碰到一个例子,结果答案根本就不对,语法就通不过,开始想着是不是case 只能是一个固定的取值,毕竟例子内给的都是case是个固定的值,后来网上查了好久才发现还有区间的 ...

  7. oracle中的case when then else end 用法

    Case when 的用法,简单Case函数 简单CASE表达式,使用表达式确定返回值. 语法: CASE search_expression WHEN expression1 THEN result ...

  8. SQL中的case when then else end用法

    --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' ...

  9. [转]SQL中的case when then else end用法

      Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' EN ...

  10. select case when if 的一些用法

    概述:sql语句中的case语句与高级语言中的switch语句,是标准sql的语法,适用于一个条件判断有多种值的情况下分别执行不同的操作. 首先,让我们看一下CASE的语法.在一般的SELECT中,其 ...

随机推荐

  1. PyQt(Python+Qt)学习随笔:Qt Designer中部件的快捷菜单策略(contextMenuPolicy)取值及含义

    在Qt Designer中可以设置部件的快捷菜单策略,快捷菜单通过在部件上点击鼠标右键触发. 快捷菜单策略通过枚举类型Qt.ContextMenuPolicy来定义,对应枚举类型取值及含义如下: 通过 ...

  2. 【开发工具】 使用阿里的 Teambition 跟踪BUG修复及需求管理

    刚入公司几个月,公司新项目一直没有用协作工具进行BUG管理,公司也没有专业的测试工程师. 第一阶段开发到了尾声,工作效率实在太低,随决定使用一个比较现代一点的管理工具. 在众多在线项目协作软件中,我选 ...

  3. 图论——迪杰斯特拉算法(Dijkstra)实现,leetcode

    迪杰斯特拉算法(Dijkstra):求一点到另外一点的最短距离 两种实现方法: 邻接矩阵,时间复杂度O(n^2) 邻接表+优先队列,时间复杂度O(mlogn)(适用于稀疏图) (n:图的节点数,m:图 ...

  4. Jenkins 如何实现 拷贝文件到网络共享目录

    在使用jenkins中,发现拷贝文件时,不能在脚本中直接添加脚本实现. 我实现的一种方法,希望能对您有用. net use y: \\server_name\workspace "passw ...

  5. Redis Sentinel-深入浅出原理和实战

    本篇博客会简单的介绍Redis的Sentinel相关的原理,同时也会在最后的文章给出硬核的实战教程,让你在了解原理之后,能够实际上手的体验整个过程. 之前的文章聊到了Redis的主从复制,聊到了其相关 ...

  6. 熊猫全球站视点关注,韩国投入47亿韩元开发区块链等ICT技术

    韩国科学技术信息通信部评选出18个包括区块链项目在内的政府扶持项目,为信息通信(ICT)创新企业提供技术开发支持. 熊猫全球站获悉,韩国政府计划分期选拔第一阶段(前期策划阶段3个月)和第二阶段(技术开 ...

  7. 题解-洛谷P4859 已经没有什么好害怕的了

    洛谷P4859 已经没有什么好害怕的了 给定 \(n\) 和 \(k\),\(n\) 个糖果能量 \(a_i\) 和 \(n\) 个药片能量 \(b_i\),每个 \(a_i\) 和 \(b_i\) ...

  8. python最大几个数和最小几个数(堆排序)

    最大几个数和最小几个数 import heapq a = [7, 5, 3, 4, 8, 6, 0] cc = heapq.nsmallest(2, a) #最小的两个数 dd = heapq.nla ...

  9. 程序员必读的 99 本书籍 & 资源

    作为程序员,始终要保持学习,一直带着纸质书还是很不便的,因此电子书对于我们还是挺需要的.为了方便广大的小伙伴也能方便找到对应的电子书,我花费洪荒之力从各个搜索网站收集了几百本常用的电子书,找到了,我要 ...

  10. oracle 11.2.0.4下载

    Oracle 11.2.0.4下载地址 Linux x86: https://updates.oracle.com/Orion/Services/download/p13390677_112040_L ...