要做一个统计查询的功能,因为涉及多张表,多种条件的统计分析。一开始便想到了UNION和IF语句,然后写了1000多行代码,就为了查30条数据觉得不应该。

然后就开始百度,多种条件下的统计。然后有一种语法让我眼前一亮,case when then else end

当满足CASE设定的条件时,就可以执行then语句。由于我要做的分组查询统计,是要罗列每一种情况,而且根据输入的“管理员编号”不同返回不同结果,结果记录的条数和每一种情况是可知的,这个语法完全可用

核心代码如下:

SELECT SUBSTR(A.业务,1,2) 行政区域,SUBSTR(A.业务,3,LENGTH(A.业务)-2) 业务模块,A.已结案,A.办理中,A.案件总数,

ROUND(A.已结案 /decode(A.案件总数, 0, 9999,A.案件总数), 4) * 100 || '%' 完成率

FROM

(SELECT '市级律师服务' 业务,

1 排序,

SUM(CASE WHEN 区县代码 IS NULL AND (TRUNC(委托时间, 'DD') BETWEEN V_SJQ AND V_SJZ) AND 申请状态代码 IN ('ztdm1','ztdm2') THEN 1 ELSE 0 END) 已结案,

SUM(CASE WHEN 区县代码 IS NULL AND (TRUNC(委托时间, 'DD') BETWEEN V_SJQ AND V_SJZ) AND 申请状态代码 NOT IN ('ztdm1','ztdm2') THEN 1 ELSE 0 END) 办理中,

SUM(CASE WHEN 区县代码 IS NULL AND (TRUNC(委托时间, 'DD') BETWEEN V_SJQ AND V_SJZ) AND 申请状态代码 IS NOT NULL THEN 1 ELSE 0 END) 案件总数

FROM TA_律师申请委托

)A

WHERE A.排序 IN(V_排序1,V_排序2,V_排序3,V_排序4,V_排序5)

ORDER BY  A.排序;

通过排序号,来控制不同管理员查询的数据范围不同:

V_排序1  INTEGER;

V_排序2  INTEGER;

V_排序3  INTEGER;

V_排序4  INTEGER;

V_排序5  INTEGER;

-----------------------------

SELECT

DECODE(P_管理员编号,'test1',2,

'test2',3,

'test3',4,

'test4',5

) INTO V_排序1 FROM DUAL;

V_排序2:=V_排序1+6;

V_排序3:=V_排序1+12;

V_排序4:=V_排序1+18;

V_排序5:=V_排序1+24;

目前测试数据量不大,优化前后性能差别不明显,但是代码行数减少了3倍以上,可读性明显增强,少了很多IF判断,理论上复杂度减少很多。

oracle条件查询数量统计,Oracle多条件的统计查询(case when)相关推荐

  1. python使用pandas基于时间条件查询多个oracle数据表

    python使用pandas基于时间条件查询多个oracle数据表 目录 python使用pandas基于时间条件查询多个orcale数据表 #orcale数据连接

  2. Oracle 数据库 - sql语句筛选出符合查询条件的第一条结果实例演示,sql查询结果只显示指定行数的数据方法

    默认看到查询条件有 3 条结果,我想只查询出日期最晚的那一条记录. -- 默认查询条件 select settledate as "日期", syscalculationmny a ...

  3. oracle多条件分组统计_多条件统计,就必须用Ifs系列函数,绝对的高能!

    数据统计,我们并不陌生,但是在实际的工作或应用中,数据统计都是附加条件的,而且大多情况下是"多条件"的,此时,我们必须掌握"Ifs"系列函数. 一.多条件判断: ...

  4. oracle中条件or,OR条件如何使用?总结OR条件实例用法

    这个亏已经吃过很多次了,在开发以前的sql代码里面,许多以 or 作为where条件的查询,甚至更新.这里举例来说明使用 or 的弊端,以及改进办法.select f_crm_id from d_db ...

  5. Excel使用COUNTIF函数统计满足多个条件的数量【转载】

    文章目录 在Excel中,如果要统计满足多个条件的数量,可以使用COUNTIF函数统计满足多个条件的数量.Excel2007可使用COUNTIF函数统计满足多个条件的数量. 如在单元格中输入下面公式: ...

  6. 通过JDBC实现对Oracle,mysql数据库的增删改查,模糊查询,查询全部,根据ID查询,分页查询,统计查询,

    首先,需要了解一些连接Oracle的基础的知识 jdbc:oracle:thin:@localhost:1521:orcl是java程序通过jdbc连接oracle数据库的一种方式. 解释: jdbc ...

  7. oracle数据库insert into,oracle中insert into用法 oracle中insert如何带条件添加数据?

    oracle insert into 脚本怎么写 INSE INTO BOOK(bookid,name,price) VALUES('100123','oracle ',54); 或者 INSE IN ...

  8. oracle怎么查询同名学生,数据库:SQL“查询同名同姓学生名单,并统计同名人数”延伸...

    /*30.查询同名同姓学生名单,并统计同名人数*/ Select Sname,count(*) as NUM from Student group by Sname having count(*)&g ...

  9. oracle+统计表的字段,统计系统中表的个数与查询所有表的字段信息-Oracle

    统计系统中表的个数与查询所有表的字段信息 –统计系统中表的个数: –表描述字段: –需要字段:Name.Code.Commente select lower(a.TABLE_NAME) || '-' ...

  10. oracle统计事务,统计Oracle 查询事务数的方法

    大家好!AningDBA又和大家见面了,今天朋友问我一个问题,把我给问住了,问题听起来很简单,就是查询"每天的事务数". 听到这个问题,大家的第一反映,我相信大部分人会和我一样,首 ...

最新文章

  1. linux下的ping脚本,Linux下检测服务器Ping值的Shell脚本
  2. html grid布局,css grid布局使用
  3. 复合高斯积分(节点数小于等于3的版本Python实现)
  4. Boost:每个连接处理的测试程序
  5. 太赞了!避免掉坑!佐治亚理工21页优雅读博指南
  6. 如何将一个完整项目推到码云_「码云下载项目」如何通过Git将本地项目提交到码云或GitHub...
  7. 前端基础练习项目——网页版扫雷
  8. 远卓:数字化转型的精益化思考
  9. px和毫米的换算_px和厘米怎么换算?
  10. 简述P问题,NP问题,NP完全问题以及NP Hard问题
  11. 工业通讯 | OEM嵌入式通讯模块与西门子PLC S7-1200通讯测试指南
  12. 深度网络自适应DCC算法
  13. 女生更多!统计局:2019年高等教育在校生中女研究生占比过半
  14. html5 梵高 星,上海梵高星空艺术馆门票
  15. shrinkwrap-resolver解析pom依赖
  16. 问:平面布置图是什么?有什么作用?如何判断好的平面布置图方案?如何绘制?
  17. [Zer0pts2020]easy strcmp
  18. 华为鸿蒙几点开发布会,华为鸿蒙发布会6月2日直播几点开始?附直播观看入口...
  19. 大物复习整理(自用)
  20. oracle rac vip什么用,Oracle VIP说明

热门文章

  1. 计算机--计算机寓言
  2. 一个小时学会Maven(参考资料)
  3. php 正方,用php的CURL模拟登录正方教务系统
  4. Ps笔刷:雨水掉落效果
  5. 02 面向对象设计的七大原则
  6. mw325r服务器无响应,水星(MERCURY)路由器MW325R上不了网/连不上网的解决方法
  7. SAP采购信息记录维护
  8. 【总线】什么是并行传输?什么是串行传输?什么是异步传输?什么是同步传输?什么是等时传输?
  9. 计算机考研专业课838考什么,17年管理学838专业课初试110分经验贴
  10. 实现符号函数sign(x)