当前位置: 首页 > news >正文

Oracle基础知识(四)

目录

1.DECODE

2.CASE  WHEN 

写法1:CASE WHEN deptno=值

写法2:CASE deptno WHEN 值

case结合between写法

3.拼接字符:||


1.DECODE

DECODE 局限:只能用等值判断

DECODE函数语法:

DECODE(判断的字段,判断值1,返回值1,判断值2,返回值2,...,默认值);

示例:EMP表需要将英文的工作转换成中文

     SALESMAN → 销售  MANAGER → 经理  PRESIDENT → 老板  其它的 → 职员

--DECODE写法
SELECT JOB, DECODE(JOB, 'SALESMAN', '销售', 'MANAGER', '经理', 'PRESIDENT', '老板', '职员') 中文
FROM EMP;

注意:最后的 ELSE 返回场景可以不写,默认返回为空 

2.CASE  WHEN 

CASE WHEN 条件1 THEN 返回值1WHEN 条件2 THEN 返回值2ELSE 默认值  ---默认值 可以写也可以不写END;

注意:CASE WHEN 可以用多条件 以及 不等值判断

case when支持不等式写法,decode不支持

示例:输出dept表的部门名称 10 → 销售部 20 → 经理部 30 → 市场部 40 → 运营部

写法1:CASE WHEN deptno=值

SELECT CASEWHEN DEPTNO = 10 THEN '销售部'WHEN DEPTNO = 20 THEN '经理部'WHEN DEPTNO = 30 THEN '市场部'WHEN DEPTNO = 40 THEN '运营部'END
FROM DEPT;

写法2:CASE deptno WHEN 值

SELECT CASE DEPTNOWHEN 10 THEN '销售部'WHEN 20 THEN '经理部'WHEN 30 THEN '市场部'END
FROM DEPT;

示例:给每个员工一个员工级别,薪资在1000以内是低级,[1000,2000]是中级,2000以上是高级

SELECT EMPNO,CASEWHEN SAL < 1000 THEN '低级'WHEN SAL BETWEEN 1000 AND 2000 THEN '中级'WHEN SAL > 2000 THEN '高级'END GRADE
FROM EMP;-- 计算薪资等级是低级的员工数
SELECT COUNT(CASE WHEN SAL < 1000 THEN 1 END)
FROM EMP;

case结合between写法

CASE WHEN END 最终是返回某个字段值,所有可以用字段的地方都可以使用CASE WHEN END

示例:统计薪资在1000~2000区间的人数 2001~3000的人数以及1000以下的人数,以及 3000 以上的人数

SELECT COUNT(CASE WHEN SAL BETWEEN 1000 AND 2000 THEN EMPNO END) "统计薪资在1000~2000区间的人",COUNT(CASE WHEN SAL BETWEEN 2001 AND 3000 THEN EMPNO END) "统计薪资在2001~3000区间的人",COUNT(CASE WHEN SAL < 1000 OR SAL > 3000 THEN EMPNO END)  "统计薪资在2001~3000区间的人"
FROM EMP;

计算每个部门中工资高于1500的人数占整个部门的人数比例

select deptno,round(count(casewhen sal > 1500 then1end) / count(1),4) * 100 || '%' as ctfrom empgroup by deptno; 

 

将 EMP表的 英文岗位 替换成中文岗位名称(两种方法实现)

select job,decode(job,'CLERK','职员','SALESMAN','销售员','PRESIDENT','老板','MANAGER','经理','ANALYST','分析师') as ch_jobfrom empgroup by job;select job,case jobwhen 'CLERK' then'职员'when 'SALESMAN' then'销售员'when 'PRESIDENT' then'老板'when 'MANAGER' then'经理'else'分析师'end as ch_jobfrom empgroup by job;

3.拼接字符:||

【例】在EMP表中,查询工资在2000元以上的姓名以及工作。预期效果:SCOTT is a ANALYST

SELECT (ENAME || ' is a ' || JOB) AS "Employee Details"
FROM EMP
WHERE SAL > 2000;
http://www.xdnf.cn/news/629497.html

相关文章:

  • OpenLayers 加载测量控件
  • 网络安全零基础培训 JavaScript基础知识点
  • 传奇各种怪物一览/图像/爆率/产出/刷新地/刷新时间/刷怪时间
  • Compose 中的 LaunchedEffect
  • 深入了解linux系统—— 操作系统的路径缓冲与链接机制
  • 真实案例拆解:智能AI客服系统中的两类缓存协同
  • 由浮点数的位级表示判断大小关系
  • 人工智能100问☞第31问:如何评估一个AI模型的性能?
  • 【MySQL】索引
  • 【动态规划】P12223 [蓝桥杯 2023 国 Java B] 非对称二叉树|普及+
  • python打卡day35@浙大疏锦行
  • 【笔记】OpenCV的学习(未完)
  • CodeBuddy 实现图片转素描手绘工具
  • springboot中各模块间实现bean之间互相调用(service以及自定义的bean)
  • 符合Python风格的对象(使用 __slots__ 类属性节省空间)
  • 搜索二叉树
  • 开盘啦 APP 抓包 逆向分析
  • 从有线到无线:PLC通讯“剪断“最后一根线!
  • MQTT-排它订阅
  • STM32F103 HAL多实例通用USART驱动 - 高效DMA+RingBuffer方案,量产级工程模板
  • python训练营第33天
  • Lesson 22 A glass envelope
  • HJ14 字符串排序【牛客网】
  • Spring AI 源码解析:Tool Calling链路调用流程及示例
  • 从法律视角看债务管理:湖北理元理律师事务所的实践探索
  • 【信息系统项目管理师】一文掌握高项常考题型-成本类计算
  • 巡礼中国西极·跨越昆仑天山 | 北斗卫星徽章护航昆仑科考
  • 神经算子项目实战:数据分析、可视化与实现全过程
  • 归一化 超全总结!!
  • leetcode hot100刷题日记——16.全排列