最近,在学习Hive基础知识时,遇到了遇到了Case When Else End语法,以前学习MySQL时忽略了这部分知识点,现总结一下相关的知识给大家。首先练习一个例子如下:

一、学生课程成绩统计

1)建表

use hiveDemo;
CREATE TABLE `course` (`id` int,`sid` int ,`course` string,`score` int
) ;

2)插入数据

// 字段解释:id, 学号, 课程, 成绩
INSERT INTO `course` VALUES (1, 1, 'yuwen', 43);
INSERT INTO `course` VALUES (2, 1, 'shuxue', 55);
INSERT INTO `course` VALUES (3, 2, 'yuwen', 77);
INSERT INTO `course` VALUES (4, 2, 'shuxue', 88);
INSERT INTO `course` VALUES (5, 3, 'yuwen', 98);
INSERT INTO `course` VALUES (6, 3, 'shuxue', 65);

3)需求

求:所有数学课程成绩 大于 语文课程成绩的学生的学号

最开始的想法是打算同过自连接的方式来解决,后来咨询了公司的同事,知道了可以case可以用来解决此问题。

a.使用case...when...将不同的课程名称转换成不同的列。

create view tmp_course_view as
select sid, case course when "shuxue" then score else 0 end  as shuxue,
case course when "yuwen" then score else 0 end  as yuwen from course;  select * from tmp_course_view;

b.以sid分组合并取各成绩最大值

create view tmp_course_view1 as
select aa.sid, max(aa.shuxue) as shuxue, max(aa.yuwen) as yuwen from tmp_course_view aa group by sid;  select * from tmp_course_view1;

c.比较结果

select * from tmp_course_view1 where shuxue > yuwen;

二、Case When Else End用法详解

1)更新

update table
set 字段1=case     when 条件1 then 值1       when 条件2 then 值2      else 值3      end
where    …… 

2)查询

select 字段1, 字段2,       case 字段3     when 值1 then 新值       when 值2 then 新值      end as 重新命名字段3的名字
from table
where ……
order by ……  

在一般的SELECT中,其语法如下:

sql 中 case when 语法在这里添加日志标题 - 钱途无梁 - Notebook of 钱途无梁SELECT <myColumnSpec> =
sql 中 case when 语法在这里添加日志标题 - 钱途无梁 - Notebook of 钱途无梁CASE
sql 中 case when 语法在这里添加日志标题 - 钱途无梁 - Notebook of 钱途无梁WHEN <A> THEN <somethingA>
sql 中 case when 语法在这里添加日志标题 - 钱途无梁 - Notebook of 钱途无梁WHEN <B> THEN <somethingB>
sql 中 case when 语法在这里添加日志标题 - 钱途无梁 - Notebook of 钱途无梁ELSE <somethingE>
sql 中 case when 语法在这里添加日志标题 - 钱途无梁 - Notebook of 钱途无梁END 

CASE可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE、GROUP BY和Order By子句中使用CASE。

MySQL中Case When用法详解相关推荐

  1. mysql中 where in 用法详解

    https://blog.csdn.net/haibo0668/article/details/52584307 sssss mysql中 where in 用法详解 我是高手高手高高手 2016-0 ...

  2. MySQL中CONCAT()函数用法详解

    需求:需要将将俩字符串拼接在一起 1.MySQL中CONCAT()函数拼接字符串 CONCAT(str,str2,str3...) 可以将两个或者多个参数拼接在一起 注意事项: ①返回结果为连接参数产 ...

  3. mysql中in的用法详解

    一.基础用法 mysql中in常用于where表达式中,其作用是查询某个范围内的数据. select * from where field in (value1,value2,value3,-) 当 ...

  4. mysql中declare语句用法详解

    mysql中的DECLARE语句是在复合语句中声明变量的指令.  (1)Example with two DECLARE statements  两个DECLARE语句的实例  CREATE PROC ...

  5. MySQL中的limit用法详解

    limit的详细用法 1.用于强制返回指定的记录行数 在查询中,经常要返回前几条或者中间某几行数据时,用到limit 语法如下: select * from table_name limit [off ...

  6. MySQL知识汇总:MySQL函数CASE WHEN用法详解

    Case When的两种简单用法 用法一: CASE seasonWHEN 'Spring' THEN '春天' WHEN 'Summer' THEN '夏天' WHEN 'autumn' THEN ...

  7. mysql in从数据库取数_MySQL数据库中 where in 用法详解

    本文主要向大家介绍了MySQL数据库中 where in 用法详解,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 这里分两种情况来介绍 WHERE column IN (valu ...

  8. viewstate 解码 php,.NET_asp.net中ViewState的用法详解,在web窗体控件设置为runat = serv - phpStudy...

    asp.net中ViewState的用法详解 在web窗体控件设置为runat = "server",这个控件会被附加一个隐藏的属性_ViewState,_ViewState存放了 ...

  9. C++中substr()函数用法详解

    C++中substr()函数用法详解 原型: string substr (size_t pos = 0, size_t len = npos) const; 返回一个新构造的string对象,其值初 ...

最新文章

  1. Sublime Text3常用插件以及安装方法(实用)
  2. 穿了个GUI马甲的PyInstaller
  3. RequestResponse总结
  4. D3-栈[Java数据结构和算法]
  5. tensorflow l2_loss函数
  6. 云技术概况:云计算的优点/特点/类型/服务模式
  7. Angular元素属性绑定的一个例子
  8. Hibernate 简介
  9. 报错,> 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL
  10. redis启动管理脚本
  11. matlab端到端仿真中基站功率,基于matlab的cdma通信系统分析及仿真
  12. firefox无法打开php,php – CORS无法在Firefox中运行
  13. html5 video标签兼容性与自定义控件
  14. java实现复数之间加减乘运算_用java实现复数的加减乘除运算(改进第1次)
  15. matlab在傅里叶里的应用,MATLAB在傅里叶变换中的应用
  16. Emacs-224-彩虹猫的实现
  17. MySQL基础知识,入门必备
  18. 前端开发者常见的英文单词汇总
  19. 电商网站建设步骤_电商网站建设的注意事项_OctShop
  20. node.js中express框架的使用

热门文章

  1. 11次面试全通关 , 面试参考指南(Java 版)真的牛
  2. 2.添加自己飞机的生命,击落敌机的分数,背景音乐(二)
  3. 达拉斯牛仔队门票的球队发挥其主场比赛在牛仔体育场在阿灵顿
  4. 笔记 GWAS 操作流程5-1:根红苗正的GWAS分析软件:GEMMA
  5. 2019年山东计算机单招学校,2019年山东单招学校有哪些?
  6. Java 编码规范1(编程规约-命名风格)
  7. Git指令大全——基础入门(一)
  8. echarts柱状图顶部添加图片
  9. java计算机毕业设计婚纱摄影网设计源码+mysql数据库+系统+lw文档+部署
  10. 电商线上支付 -- --支付宝, 微信和账期支付等 以及 线下支付(转账,汇票,货到付款)流程梳理