【LEFT JOIN 实战记录】统计查询-问题明细指标查询
2017-11-01 16:40
561 查看
【LEFT JOIN 实战记录】统计查询-问题明细指标查询
【LEFT JOIN 实战记录】统计查询-整改事项查询(多表联合查询+多次左连接字典表)
【LEFT JOIN 实战记录】统计查询-按主办处室区县查询纳入分析研判库
【LEFT JOIN 实战记录】是否纳入市级预算项目概览界面
【LEFT JOIN 入门级实践】项目表与组织表与人员表,其中人员存在上下级关系
【LEFT JOIN 入门级实践】MYSQL 简单实现 ORACLE minus 差集函数
如何手动将ORACLE的sql建表语句转换为MYSQL的建表语句
【LEFT JOIN 实战记录】统计查询-整改事项查询(多表联合查询+多次左连接字典表)
【LEFT JOIN 实战记录】统计查询-按主办处室区县查询纳入分析研判库
【LEFT JOIN 实战记录】是否纳入市级预算项目概览界面
【LEFT JOIN 入门级实践】项目表与组织表与人员表,其中人员存在上下级关系
【LEFT JOIN 入门级实践】MYSQL 简单实现 ORACLE minus 差集函数
如何手动将ORACLE的sql建表语句转换为MYSQL的建表语句
--利用ROWNUM,实现序列号的展示 SELECT ROWNUM AS NUM,*, --计算百分比时,如果分母存在可以能为0的状态时,可以通过NUllIF(X,Y)函数来避免 --NULLIF(X,Y) 当X=Y时,为NULL,否则为 X SELECT ROWNUM AS NUM,*, TO_NUMBER(RECTIFY_COUNT)/NULLIF(TO_NUMBER(ALL_PROBLEM_COUNT),0) AS RECTIFY_RATE, TO_NUMBER(CAN_RECTIFY_COUNT)/NULLIF(TO_NUMBER(ALL_CAN_RECTIFY_COUNT),0) AS CAN_RECTIFY_RATE, (PROMOTE_MONEY_CASH+SAVINGS_AMOUNT)/NULLIF(DEAL_MONEY,0) AS DEC_REPORT_RECTIFY_RATE FROM (SELECT D.CODE_NAME, COUNT(P.PROBLEM_UUID) AS ALL_PROBLEM_COUNT, COUNT(CASE WHEN< 4000 /span> P.UNRECTIFY_REASON = '00030003' THEN NULL ELSE 1 END) AS ALL_CAN_RECTIFY_COUNT, COUNT ( CASE WHEN (P.FINALLY_CHECK_STATE='1' OR P.FINALLY_CHECK_STATE='2' OR P.FINALLY_CHECK_STATE='3') AND P.UNRECTIFY_REASON != '00030003' THEN 1 ELSE NULL END ) AS CAN_RECTIFY_COUNT, COUNT ( CASE WHEN P.FINALLY_CHECK_STATE='1' OR P.FINALLY_CHECK_STATE='2' OR P.FINALLY_CHECK_STATE='3' THEN 1 ELSE NULL END ) AS RECTIFY_COUNT, COUNT ( CASE WHEN P.FINALLY_CHECK_STATE='2' THEN 1 ELSE NULL END ) AS RECTIFY_2_COUNT, COUNT ( CASE WHEN P.FINALLY_CHECK_STATE='1' THEN 1 ELSE NULL END ) AS RECTIFY_1_COUNT, COUNT ( CASE WHEN P.FINALLY_CHECK_STATE='3' THEN 1 ELSE NULL END ) AS RECTIFY_3_COUNT, --将varchar型转换为number后,在SUM求和 SUM(TO_NUMBER(P.DEAL_MONEY)) AS DEAL_MONEY, SUM(TO_NUMBER(P.PROMOTE_MONEY_CASH)) AS PROMOTE_MONEY_CASH, SUM(TO_NUMBER(F.SAVINGS_AMOUNT)) AS SAVINGS_AMOUNT FROM --此处查询分组数据,按各个表分组 --LPAD函数,左补位 --详细链接:https://www.2cto.com/database/201112/115416.html --此处补位的原因是因为,在字典表中,问题类型存在 一,二,三级的“同名”的情况,例如“其他”,1,2,3级均有。 --同名的情况下,按名字来分组,导致只能展现出一条数据,所以通过给不同等级的名称左补位来区分 --通过判断LENGTH(code_value)/3的值来补位 (SELECT CODE_VALUE,LPAD(CODE_NAME,LENGTH(CODE_VALUE)/3+LENGTH(CODE_NAME),' -') AS CODE_NAME FROM CODE_INFO WHERE DATA_SORT_UUID = '00004' AND IS_DEL = '0' ORDER BY CODE_VALUE) D LEFT JOIN --TODO 此处未考虑全行业项目事项 (SELECT PROBLEM_UUID,PROBLEM_NAME, BUDGET_YEAR, DOCUMENT_TYPE, RESPONSIBILITY_SUBJECT, RECTIFY_STATE, OVERDUE, METHOD, UNRECTIFY_REASON_REMARK, UNRECTIFY_REASON, SITUATION_PLAN, REMARK, ANALYSIS_TAG, ANALYSIS_REASON, FIRST_CHECK_TAG, PROBLEM_NATURE, DETAILED, AMOUNT, UNIT, HANDLE_SITUATION, DEAL_MONEY, DURING_AUDIT_MONEY, PROMOTE_MONEY, PROMOTE_MONEY_CASH, FINALLY_CHECK_STATE, PROBLEM_NATURE_NAME, DETAILED_NAME, PRJ.PROJECT_UUID,PLAN_YEAR,PROJECT_NAME,OFFICESID,PROJECT_CLASSIFICATION FROM PROJECT PRJ LEFT JOIN PROBLEM ON PROBLEM.PROJECT_UUID = PRJ.PROJECT_UUID WHERE PRJ.IS_DEL = '0' AND PROBLEM.IS_DEL = '0' ) P ON P.DETAILED LIKE '%'||D.CODE_VALUE||'%' AND (P.OFFICESID = ? OR '' = ? ) AND (P.DOCUMENT_TYPE = ? OR '' = ? ) AND (P.PROJECT_CLASSIFICATION = ? OR '' = ? ) AND (P.PLAN_YEAR = ? OR '' = ? ) LEFT JOIN FOLLOWUP F ON F.PROBLEM_UUID = P.PROBLEM_UUID --后续填报事项表(Followup),事项表与后续填报事项表存在1对多关系,通过VERSION版本号来区分 --MAX函数找出对应事项表关联得后续填报事项表中最高版本,并将值返回给查询条件(F.version=X) --F.version is null 代表只首次填报了,还未开始后续填报或不需要后续填报的情况 AND (F.VERSION = (SELECT TO_CHAR(MAX(TO_NUMBER(VERSION))) FROM FOLLOWUP WHERE FOLLOWUP.PROBLEM_UUID = P.PROBLEM_UUID) OR F.VERSION IS NULL) WHERE 1=1 AND (D.CODE_NAME LIKE '%'||?||'%' OR '' = ? ) AND (? LIKE '%'||(LENGTH(D.CODE_NAME))||'%' OR '' = ? ) GROUP BY D.CODE_VALUE, D.CODE_NAME)
相关文章推荐
- 【LEFT JOIN 实战记录】统计查询-按主办处室区县查询纳入分析研判库
- 【LEFT JOIN 实战记录】统计查询-整改事项查询(多表联合查询+多次左连接字典表)
- sqlserver 连接查询的问题,a表无重复记录,与b表中的记录为1对N关系,如何在查得a表信息时统计b表记录数
- Hibernate中用left join(左外连接)查询映射中没有关联关系的两个表记录问题
- 解决模糊查询的结果记录排序问题
- 记录编译GCC 5.2.0时遇到的问题和解决方法,以备日后查询。
- Mybatis 查询int类型数据,返回记录条数为0时报错问题解决
- GAT项目新需求:保险管理增加查询统计-传日期参数问题
- mysql查询时去除重复数据以及 FOUND_ROWS 统计记录函数
- not in 查询无记录问题的解决
- 记录一个mysql按日期分组统计的查询
- 电Call记录统计查询sql
- tomcat 2-- 关于一些部署启动问题和403问题的查询记录
- 查询药品明细表里储备为空时遇到的问题
- 记录一个mysql按日期分组统计的查询
- 利用postgresql进行缓冲区内对象检测过程中遇到的sql查询效率问题解决方案记录
- 统计mysql慢查询记录前10条语句
- [项目过程中所遇到的各种问题记录]ORM篇——有关NHibernate查询封装
- sql表查询某一字段为空的记录的问题
- oracle中查询表重复字段记录时的效率问题...