SQL Server中按员工统计完整年度的最高/最低年度销售配额
解决员工完整年度销售配额的最高/最低统计问题
我来帮你搞定这个年度配额统计的问题!你的现有SQL是针对季度配额的,但要实现年度的统计,我们需要分两步走:先计算每个员工完整年度(四个季度都有数据)的年度总配额,再基于这个结果找出每个员工的最高和最低年度配额。
分步实现思路
- 第一步:筛选出每个员工的完整年度(四个季度均有配额记录),并计算该年度的总配额;
- 第二步:基于第一步的结果,统计每个员工的最高、最低年度总配额。
完整SQL代码
-- 第一步:计算每个员工的完整年度总配额 WITH EmployeeAnnualQuotas AS ( SELECT EmployeeKey, CalendarYear, SUM(SalesAmountQuota) AS AnnualTotalQuota FROM FactSalesQuota GROUP BY EmployeeKey, CalendarYear -- 仅保留四个季度都有配额的完整年度 HAVING COUNT(DISTINCT CalendarQuarter) = 4 ) -- 第二步:统计每个员工的最高/最低年度配额 SELECT EmployeeKey, MAX(AnnualTotalQuota) AS MaxAnnualQuota, MIN(AnnualTotalQuota) AS MinAnnualQuota FROM EmployeeAnnualQuotas GROUP BY EmployeeKey ORDER BY EmployeeKey;
代码说明
- 使用
WITH子句创建临时结果集EmployeeAnnualQuotas,它会按员工和年度分组,计算年度总配额,同时通过HAVING COUNT(DISTINCT CalendarQuarter) = 4确保只统计四个季度数据都存在的完整年度; - 外层查询基于这个临时结果集,按员工分组后直接取年度总配额的最大值和最小值,就是你需要的结果。
另外提一下:你原来的SQL逻辑存在问题——自连接完全没必要,而且只是取出了员工所有季度配额里的最大和最小值,并没有关联到年度维度,也没有筛选完整年度的条件,所以无法满足你的需求。
内容的提问来源于stack exchange,提问作者YH93
相关产品推荐
相关产品推荐

