SQL实践一

简介: 需求 所有部门汇总的结果的打分。大部分指标是根据部门汇总(SUM或AVG)结果打分。 但面谈率和前10%加班平均小时数俩指标,不是根据所有部门(TEAM)汇总(SUM或AVG)结果打分。

需求

所有部门汇总的结果的打分。大部分指标是根据部门汇总(SUM或AVG)结果打分。
但面谈率和前10%加班平均小时数俩指标,不是根据所有部门(TEAM)汇总(SUM或AVG)结果打分。而是需要根据每个部门的
数据做排序或累加后的结果打分
面谈率计算方式:TEAM1中季度1月份,面谈人数比例目标是33% -》 目标面谈人数 = 部门人数*33%
               实际面谈人数 = 10
    TEAM1中季度2月份,面谈人数比例目标是60% -》 目标面谈人数 = 部门人数*60%
               实际面谈人数 = 2 + 10(1月份实际面谈人数)
    TEAM1中季度3月份,面谈人数比例目标是100% -》目标面谈人数 = 部门人数*100%
               实际面谈人数 = 1 + 12(2月份实际面谈人数)
这里部门人数是按季度统计每个季度部门的总人数(且不算领导,在之前存储过程中部门人数已确定,CVS_DEPT_PAX_CNT表示),因为每季度部门人数或部门关系都可能变更
计算每月实际面谈率 = 实际面谈人数 / CAST(目标面谈人数 AS NUMERIC(19,2)) * 100  
注意 这里是把整数转换成小数保证不用整除计算。要求是小数
具体SQL如下
    /*每个group的统计*/
           
    DECLARE @CVS_SING_STAT AS TABLE
    ( 
       TEAM_CD VARCHAR(20)         
      ,GRP_CD VARCHAR(20)         
      ,CHECK_RADIO numeric(19,2) 
     
    )
     INSERT INTO @CVS_SING_STAT
     SELECT T.TEAM_CD,T.DEPT_CD GRP_CD,T.CHECK_RADIO
     FROM /*如下内层查询是在SQL SERVER 2008上做每行的累积运算*/
       SELECT   SUBSTRING(BASE.DHSTC_CD,0,5) DH_YEAR ,BASE.STC_MONTH ,SUBSTRING(BASE.DHSTC_CD,5,8) DH_MONTH
         ,BASE.TEAM_CD,BASE.DEPT_CD,BASE.H09_CNT,BASE.CVS_DEPT_PAX_CNT
         ,SUM(ROLL.H09_CNT) ACC
         ,SUM(ROLL.H09_CNT)/BASE.CVS_DEPT_PAX_CNT CVS_RAT
         --,33.0/100.0
         --,CAST(33.0/100.0 AS NUMERIC(19,2))
         --,SUM(ROLL.H09_CNT)/(BASE.CVS_DEPT_PAX_CNT*(33.0/100.0)) 就是实际面谈人数/目标面谈人数
         --,CAST(SUM(ROLL.H09_CNT)/(BASE.CVS_DEPT_PAX_CNT*(33.0/100.0)) AS NUMERIC(19,2)) FLOATTEST
         ,CASE WHEN BASE.STC_MONTH = '01' THEN CAST(SUM(ROLL.H09_CNT)/(BASE.CVS_DEPT_PAX_CNT*(33.0/100.0)) AS NUMERIC(19,2))
         WHEN BASE.STC_MONTH = '02' THEN CAST(SUM(ROLL.H09_CNT)/(BASE.CVS_DEPT_PAX_CNT*(66.0/100.0)) AS NUMERIC(19,2))
         WHEN BASE.STC_MONTH = '03' THEN CAST(SUM(ROLL.H09_CNT)/(BASE.CVS_DEPT_PAX_CNT*(100.0/100.0)) AS NUMERIC(19,2))
        END CHECK_RADIO
      FROM T_DM_DHSTC_DEPT BASE
       ,T_DM_DHSTC_DEPT ROLL
      WHERE SUBSTRING(BASE.DHSTC_CD,0,5) = SUBSTRING(ROLL.DHSTC_CD,0,5)--YEAR
      AND   BASE.STC_QUATR = ROLL.STC_QUATR
      AND   BASE.STC_MONTH >= ROLL.STC_MONTH
      AND   BASE.TEAM_CD = ROLL.TEAM_CD
      AND   BASE.DEPT_CD = ROLL.DEPT_CD     
       -- AND   BASE.DEPT_CD = 'EA190086'
      GROUP BY SUBSTRING(BASE.DHSTC_CD,0,5),BASE.TEAM_CD,BASE.DEPT_CD,SUBSTRING(BASE.DHSTC_CD,5,8),BASE.STC_MONTH,BASE.H09_CNT,BASE.CVS_DEPT_PAX_CNT
       
     )T
     WHERE T.DH_YEAR = @YEAR AND T.DH_MONTH = @MONTH
            
            
            
                /*每个TEAM的统计*/
           
    DECLARE @CVS_TEAM_STAT AS TABLE
    ( 
       TEAM_CD VARCHAR(20)         
      ,GRP_CD VARCHAR(20)         
      ,CHECK_RADIO numeric(19,2) 
    )
     DECLARE @CVS_TEAM_BASE AS TABLE
         ( 
          DH_YEAR  VARCHAR(20)
            ,STC_QUATR VARCHAR(20)
            ,STC_MONTH VARCHAR(20)
            ,DH_MONTH  VARCHAR(20)
            ,TEAM_CD VARCHAR(20)         
            ,DEPT_CD VARCHAR(20)
            ,CVS_GRP_PAX_CNT  numeric(19,2)
            ,H09_CNT      numeric(19,2)    
          
         )
                   
                INSERT INTO @CVS_TEAM_BASE
                SELECT T1.DH_YEAR,T2.STC_QUATR,T1.DH_MONTH,T2.STC_MONTH,T2.TEAM_CD,'-' GRP_CD
                      ,SUM(CVS_DEPT_PAX_CNT) CVS_GRP_PAX_CNT
                      ,SUM(T2.H09_CNT) ACC_H09_CNT
                                    
                FROM  T_DM_DHSTC      T1
                     ,T_DM_DHSTC_DEPT T2
                WHERE
                --and   TEAM_CD = 'EA190001'
                      T1.DHSTC_CD = T2.DHSTC_CD
                GROUP BY  T1.DH_YEAR,T2.STC_QUATR,T1.DH_MONTH,T2.STC_MONTH
                         ,T2.TEAM_CD
                        
                INSERT INTO @CVS_TEAM_STAT
                SELECT T.TEAM_CD,'-' GRP_CD,T.CHECK_RADIO
                FROM(
                     SELECT BASE.DH_YEAR,MAX(BASE.STC_QUATR) STC_QUATR,BASE.DH_MONTH,BASE.STC_MONTH,BASE.TEAM_CD,BASE.H09_CNT
                          ,SUM(ROLL.H09_CNT) ACC
                          ,BASE.CVS_GRP_PAX_CNT
                          ,SUM(ROLL.H09_CNT)/BASE.CVS_GRP_PAX_CNT CVS_RAT
                         ,CASE  WHEN BASE.STC_MONTH = '01' THEN CAST(SUM(ROLL.H09_CNT)/(BASE.CVS_GRP_PAX_CNT*(33.0/100.0)) AS NUMERIC(19,2))
                                WHEN BASE.STC_MONTH = '02' THEN CAST(SUM(ROLL.H09_CNT)/(BASE.CVS_GRP_PAX_CNT*(66.0/100.0)) AS NUMERIC(19,2))
                                WHEN BASE.STC_MONTH = '03' THEN CAST(SUM(ROLL.H09_CNT)/(BASE.CVS_GRP_PAX_CNT*(100.0/100.0)) AS NUMERIC(19,2))
                            END CHECK_RADIO
                           
         FROM @CVS_TEAM_BASE BASE
             ,@CVS_TEAM_BASE ROLL
         WHERE BASE.DH_YEAR = ROLL.DH_YEAR
         --AND   BASE.DH_MONTH = ROLL.DH_MONTH
         AND   BASE.STC_QUATR = ROLL.STC_QUATR
      
         AND   BASE.DH_MONTH >= ROLL.DH_MONTH
      
         AND   BASE.TEAM_CD = ROLL.TEAM_CD    
      
         GROUP BY BASE.DH_YEAR,BASE.DH_MONTH,BASE.STC_MONTH,BASE.TEAM_CD,BASE.H09_CNT,BASE.CVS_GRP_PAX_CNT
        
     )T
     WHERE T.DH_YEAR = @YEAR AND T.DH_MONTH = @MONTH
    

目录
相关文章
|
3月前
|
SQL 存储 API
Flink实践:通过Flink SQL进行SFTP文件的读写操作
虽然 Apache Flink 与 SFTP 之间的直接交互存在一定的限制,但通过一些创造性的方法和技术,我们仍然可以有效地实现对 SFTP 文件的读写操作。这既展现了 Flink 在处理复杂数据场景中的强大能力,也体现了软件工程中常见的问题解决思路——即通过现有工具和一定的间接方法来克服技术障碍。通过这种方式,Flink SQL 成为了处理各种数据源,包括 SFTP 文件,在内的强大工具。
177 15
|
4月前
|
SQL 存储 Unix
Flink SQL 在快手实践问题之设置 Window Offset 以调整窗口划分如何解决
Flink SQL 在快手实践问题之设置 Window Offset 以调整窗口划分如何解决
66 2
|
5月前
|
SQL 缓存 监控
14个Flink SQL性能优化实践分享
【7月更文挑战第12天】 1. **合理设置并行度**: 根据数据量和资源调整以提高处理速度. 2. **优化数据源**: 使用分区表并进行预处理减少输入量. 3. **数据缓存**: 采用 `BROADCAST` 或 `REPARTITION` 缓存常用数据. 4. **索引和分区**: 创建索引并按常用字段分区. 5. **避免不必要的计算**: 检查并移除多余的计算步骤. 6. **调整内存配置**: 分配足够内存避免性能下降. 7. **优化连接操作**: 选择适合大表和小表的连接方式. 8. **数据类型优化**: 选择合适类型以节省资源. ........
126 1
|
2月前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
75 11
|
2月前
|
SQL 存储 关系型数据库
添加数据到数据库的SQL语句详解与实践技巧
在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
|
2月前
|
SQL 关系型数据库 数据库
SQL数据库:核心原理与应用实践
随着信息技术的飞速发展,数据库管理系统已成为各类组织和企业中不可或缺的核心组件。在众多数据库管理系统中,SQL(结构化查询语言)数据库以其强大的数据管理能力和灵活性,广泛应用于各类业务场景。本文将深入探讨SQL数据库的基本原理、核心特性以及实际应用。一、SQL数据库概述SQL数据库是一种关系型数据库
73 5
|
2月前
|
SQL 开发框架 .NET
ASP连接SQL数据库:从基础到实践
随着互联网技术的快速发展,数据库与应用程序之间的连接成为了软件开发中的一项关键技术。ASP(ActiveServerPages)是一种在服务器端执行的脚本环境,它能够生成动态的网页内容。而SQL数据库则是一种关系型数据库管理系统,广泛应用于各类网站和应用程序的数据存储和管理。本文将详细介绍如何使用A
61 3
|
2月前
|
SQL 消息中间件 分布式计算
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
80 0
|
2月前
|
SQL 大数据
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
59 0
|
4月前
|
SQL 流计算
Flink SQL 在快手实践问题之通过 SQL 改写实现状态复用如何解决
Flink SQL 在快手实践问题之通过 SQL 改写实现状态复用如何解决
50 2