sum和case when的结合使用

废话不多说,我们直接进行测试。

1.学生表数据

2.将学生按照性别区分

我们一般的写法就是使用group by进行分组。

select t.ssex, count(t.sname) from STUDENT t group by t.ssex;

如果我们需要求男生的人数是女生的多少倍怎么计算?

3.求男生的人数是女生的多少倍(sum和case when的结合使用)

select "男生人数", "女生人数", "男生人数" / "女生人数" as 倍数

from (select sum(case

when t.ssex = '男' then

1

else

0

end) as "男生人数",

sum(case

when t.ssex = '男' then

1

else

0

end) as "女生人数"

from STUDENT t)

通俗理解:就是将group by t.ssex的结果进行”行转列”操作

4.求同比和环比

1)同比概念

同比一般情况下是今年第n月与去年第n月比。

公式:同比增长率=(本期数-同期数)÷同期数×100%

一般理解:同比增长率=(今年第n月的数据-去年第n月数据)÷去年第n月数据×100%

2)同比测试

收入表数据

2019年5月收入同比

select "本期收入", "同期收入", to_char(("本期收入" - "同期收入") / "同期收入",'fm99990.00') "同比"

from (select sum(case

when t.year = 2019 and month = 5 then

t.money

else

0

end) as "本期收入",

sum(case

when t.year = 2018 and month = 5 then

t.money

else

0

end) as "同期收入"

from income t

where t.name = '张三')

3)环比概念

环比,表示连续2个单位周期(比如连续两月)内的量的变化比。

公式:环比增长率=(本期数-上期数)/上期数×100%

4)环比测试

2019年5月收入环比

select "本期收入", "上期收入", to_char(("本期收入" - "上期收入") / "上期收入",'fm99990.00') "环比"

from (select sum(case

when t.year = 2019 and month = 5 then

t.money

else

0

end) as "本期收入",

sum(case

when t.year = 2019 and month = 4 then

t.money

else

0

end) as "上期收入"

from income t

where t.name = '张三')

oracle按年同比环比,oracle中sum和case when的结合使用(求同比和环比)相关推荐

  1. ESX上ORACLE 10.2RAC(4.在REHAT4.7中安装ORACLE RAC)

    四. 安装CRS软件 上传cluster软件到rac1,rac2的/home/oracle目录下 [root@rac1 ~]# cd /home/oracle [root@rac1 oracle]# ...

  2. oracle外部表ora29913,从外部表中选择sqlplus错误:ORA-29913:执行ODCIEXTTABLEOPEN标注时出错...

    我已经建立了一个简单的Oracle外部表测试,我(与DBA和Unix管理员一起)无法工作. 以下内容基于Oracle的External Tables Concepts.我们使用的数据库是11g. 这是 ...

  3. 服务中启动oracle服务,Linux下如何自动启动Oracle服务

    在windows下,可以在计算机服务管理里将Oracle服务设置为自动,Linux中在Oracle安装完毕以后,如果重新启动Linux ,Oracle是不会自动启动的,你可以通过手动调用dbstart ...

  4. oracle元数据存储在表空间,oracle db中数据和元数据的概念

    本帖最后由 warehouse 于 2014-8-10 11:58 编辑 02年研究dw相关的产品和业务时第一次听说了元数据的概念,很多资料上是这样描述元数据的概念的:元数据是定义或者描述数据的数据. ...

  5. oracle里有limit怎么用,[ORACLE]ORACLE 实现mysql中的limit 功能

    [ORACLE]ORACLE 实现mysql中的limit 功能 项目从mysql迁移到ORACLE中遇到移植问题,mysql中支持limit 而ORACLE say no . 解决方法 利用ORAC ...

  6. sql oracle 自增长字段,在Oracle、MySQL、MS SQL Server中创设自动增长字段

    在Oracle.MySQL.MS SQL Server中创建自动增长字段 好吧,今天面试有道题,要各个数据库怎么建立自增长字段,顺便复习一下吧,最近面试很多数据库问题... 一:Oracle Orac ...

  7. oracle执行脚本顺序执行吗,【ORACLE】记录通过执行Oracle的执行计划查询SQL脚本中的效率问题 - 不及格的飞鱼...

    记录通过执行Oracle的执行计划查询SQL脚本中的效率问题 问题现象: STARiBOSS5.8.1R2版本中,河北对帐JOB执行时,无法生成发票对帐文件. 首先,Quartz表达式培植的启动时间为 ...

  8. oracle修改asm参数文件,学习笔记:Oracle RAC参数文件管理 修改创建asm中的spfile文件...

    天萃荷净 Oracle rac创建修改asm中的spfile文件内容 create spfile to asm --查看sid SQL> show parameter instance_name ...

  9. 在linux操作系统中启动oracle数据库程序,Linux系统下Oracle数据库的安装和启动关闭操作教程...

    这篇文章主要介绍了Linux系统下Oracle数据库的安装和启动关闭操作教程,并针对在sqlplus下所需执行的命令进行讲解,需要的朋友可以参考下 1.准备: df -H 查看空间剩余   一般准备最 ...

  10. oracle中sum和count可以嵌套吗_【分享吧】Oracle查询转换

    前言 "查询转换"是Oracle解析SQL语句中重要的步骤.其原理是Oracle在解析时通过对原有SQL的等价改写,以达到较高执行效率的方式. 上图展示了SQL的执行过程,当客户提 ...

最新文章

  1. Swift 字面量表达
  2. 一次mysql瘫痪解救
  3. 【转】python删除小记
  4. Subset-Sum Problem 子集和问题
  5. UI组件:ext、JqueryEasyUI、miniui、dhtmlx及自定义页面
  6. 字节流写数据加异常处理
  7. 使用 SAP Cloud SDK 连接 OData 服务
  8. No.7 nginx、nfs、集群
  9. java获取机器号_(转)JAVA获得机器码的实现
  10. 接口请求(get、post、head等)详解
  11. 数据库加主键sql_SQL数据库设计:选择主键
  12. 沙盘模拟软件_3D电子心理沙盘系统
  13. Zabbix邮件报警设置
  14. php未定义常量破解,如何使PHP未定义的常量注意到错误
  15. Atitit 圣爱提拉克斯工作最紧张的时候 11月,圣爱提拉克斯进入了一年中工作最紧张的时候。 过去,他每个月都要撰写不少文章、与不同的人愉快地交谈,教育他们沿着圣爱提拉克斯创造的世界上最伟大的圣
  16. SSH婚庆策划系统案例
  17. MATLAB数值计算——矩阵的逆、矩阵的特征值、矩阵的特征多项式
  18. 计算机网络 上 物理层和数据链路层
  19. 基于STM32F103C8T6的74HC595驱动8位数码管模块学习
  20. 台式计算机的cpu,台式电脑处理器(CPU)性能排行榜

热门文章

  1. java liveness_存活探针(liveness probe)
  2. 大湿教我写程序(2)之走向AV之路
  3. Android Bluetooth HCI log 详解
  4. 《设计心理学》学习笔记之日常的设计(第一册)
  5. 武汉理工计算机研究生就业去向统计,武汉理工大学《2019届毕业生就业质量报告》发布,本科生月薪7333...
  6. 合理设置 让你的迅雷下载速度越来越快
  7. 基于MATLAB的无线信道性能仿真
  8. 在局域网内怎样使两台计算机共享,实现局域网内两台windows计算机之间数据共享...
  9. cocos2d AABB碰撞检测
  10. 简单实用算法——人民币金额大写转换