我正在使用SQL Server中的数据库进行工作,该数据库包含以美元为单位的季度员工销售配额。我要从中检索信息的表包含以下列:
包含SalesAmountQuota的列显示季度配额。
下面列出的一个EmployeeID的样本数据和预期结果 Employeekey Datekey年份季度SalesAmountquota日期
1 272 20101229 2010 4 28000,00 2010-12-29 00:00:00.000
11 272 20110331 2011 1 7000,00 2011-03-31 00:00:00.000
21 272 20110701 2011 3 91000,00 2011-07-01 00:00:00.000
31 272 20110929 2011 3 140000,00 2011-09-29 00:00:00.000
41 272 20111229 2011 4 70000,00 2011-12-29 00:00:00.000
54 272 20120330 2012 1 154000,00 2012-03-30 00:00:00.000
68 272 20120630 2012 2 107000,00 2012-06-30 00:00:00.000
82 272 20120928 2012 3 58000,00 2012-09-28 00:00:00.000
96 272 20121228 2012 4 263000,00 2012-12-28 00:00:00.000
113 272 20130330 2013 1 116000,00 2013-03-30 00:00:00.000
130 272 20130630 2013 2 84000,00 2013-06-30 00:00:00.000
147 272 20130929 2013 3 187000,00 2013-09-29 00:00:00.000
emp键MaxSalesQuota MinSalesquota
272 582000,00 28000,00
但是,我想创建一个概览,显示每个EmployeeID的有史以来最高的年度销售配额和有史以来最低的年度销售配额(仅适用于所有四个季度配额都包含一个值)
我使用下面的语句设法找到了每位员工有史以来最高和最低的季度销售报价,但是我很难创建一个检索每位员工的年度最高和最低报价的报表。 有人可以帮助我吗?非常感谢您的帮助。
SELECT A.EmployeeKey,
MAX(A.SalesAmountQuota) as MaxQuota,
Min(B.SalesAmountQuota) as MinQuota
FROM FactSalesQuota A, FactSalesQuota B
WHERE A.SalesAmountQuota = B.SalesAmountQuota
GROUP BY A.EmployeeKey
ORDER BY A.EmployeeKey
答案 0 :(得分:4)
有一个派生表,您可以在其中SUM()
分配每个员工的年度配额,并使用HAVING
子句来确保每年所有四个季度都在那里。然后选择最大和最小年度配额:
select EmployeeKey, max(YearQuota ), min(YearQuota)
from
(
SELECT EmployeeKey, SUM(SalesAmountQuota) as YearQuota
FROM FactSalesQuota
GROUP BY EmployeeKey, CalendarYear
HAVING count(distinct CalendarQuarter) = 4
) dt
group by EmployeeKey