ORACLE多条件的统计查询(case when)
前几天要做一个统计查询的功能,因为涉及多张表,多种条件的统计分析。一开始便想到了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的分析函数Over,正在研究中。。。。。。
转载于:https://www.cnblogs.com/luowz/p/5804639.html
ORACLE多条件的统计查询(case when)相关推荐
- oracle条件查询数量统计,Oracle多条件的统计查询(case when)
要做一个统计查询的功能,因为涉及多张表,多种条件的统计分析.一开始便想到了UNION和IF语句,然后写了1000多行代码,就为了查30条数据觉得不应该. 然后就开始百度,多种条件下的统计.然后有一种语 ...
- oracle多条件分组统计_多条件统计,就必须用Ifs系列函数,绝对的高能!
数据统计,我们并不陌生,但是在实际的工作或应用中,数据统计都是附加条件的,而且大多情况下是"多条件"的,此时,我们必须掌握"Ifs"系列函数. 一.多条件判断: ...
- 【Oracle 常用查询】oracle表空间使用率统计查询
参考1 --查询表空间使用情况 SELECT Upper(F.TABLESPACE_NAME) "表空间名",D.TOT_GROOTTE_MB "表空间大小(M)&quo ...
- Oracle数据库按月统计(候,旬,月,季,年)
Oracle数据库按月统计 SELECT TO_CHAR(ds.date_time,'YYYY-MM'),count(*) FROM tab_name ds GROUP BY TO_CHAR(ds.d ...
- oracle多条件分组查询数量_ORACLE分组查询和统计等
select flow_id,rw from (select t.flow_id ,rownum as rw from apex_030200.wwv_flow_list_templates t) ...
- oracle查询多个条件查询,ORACLE多条件统计查询的简单方法
前几天要做一个统计查询的功能,因为涉及多张表,多种条件的统计分析.一开始便想到了UNION和IF语句,然后写了1000多行代码,就为了查30条数据觉得不应该. @H_301_2@ 然后就开始百度,多种 ...
- SQL service基础(二)对数据指定列查询、条件查询、查询结果排序、聚集函数查询、分组统计查询
实验目标: 1.掌握指定列或全部列查询 2.掌握按条件查询 3.掌握对查询结果排序 4.掌握使用聚集函数的查询 5.掌握分组统计查询 一.请完成书中实验7.1,并完成以下问题. 1.查询所有学生的姓名 ...
- case when then else_啃食Oracle:条件分支表达式CASE
啃食Oracle:条件分支表达式CASE CASE表达式是条件分支表达式,类似于if - elsif -else条件分支语句.常见用法是在select的表达式列表中使用. 以下图示来自于官方文档 上图 ...
- mysql 查询后根据值的不同进行判断与修改,SQL中的条件判断语句(case when zhen)用法
需求: mysql 查询后根据值的不同进行判断与修改 语法结构: SQL中的条件判断语句(case when zhen)用法 SELECT A.品号,属性, CASE ...
最新文章
- Matlab编程与数据类型 -- M文件的编辑和存储
- 解题报告(二)B、(P3338 [ZJOI2014])力(FFT经典套路)(2)
- MVC ScriptBundle自定义排序。
- 如何安装gnuplot
- php本地环境搭建软件下载,用EasyPHP本地搭建PHP环境的步骤分享
- img 标签 点击跳出图层_你竟然不知道cad图层也可以导出与导入?
- java测试netty_《Netty官方文档》基准测试
- spring MVC 的MultipartFile转File读取
- OSPF-5类LSA和4类LSA
- 陆奇:疫情后将出现哪些创业新机会?
- Mysql 数据 导入 导出
- 洛谷 P4300 BZOJ 1266 [AHOI2006]上学路线route
- php正则 网址,php使用正则表达式获取字符串中的URL
- Android下最简单的Audio Player
- MATLAB实现主成分分析
- 树莓派 引脚及接口图 AV接口顺序
- mysql临时表关联查询_MySQL如何执行关联查询
- Rxjava Subject分析
- R配对样本t检验(PAIRED T-TEST​​​​​​​)
- win7下安装配置opengrok
热门文章
- h3csyslog_H3C Syslog简单配置
- c++jpg转bmp_用C++加速julia:BMP图片读取
- Vue 切换路由后页面回到页面顶部
- Unknown column 'password_lifetime' in 'field list';创建数据库时创建用户,修改用户时报错
- js 判断移动端还是pc端,ios或者android
- 图文列表+富文本解析+折线图示例小程序模板
- IIS错误代码500.21 ,Nhibernate更新报错,委托的使用。action传参数
- jQuery水印插件 - Watermark 和 FormWatermark
- RewriteCond 详解
- C++ 拷贝构造函数和赋值运算符