Находите годовые MAX и MIN на сотрудника, используя квартальные данные - PullRequest
1 голос
/ 19 марта 2019

Я работаю из базы данных на SQL-сервере, в которой указана квартальная квота продаж для сотрудников в долларах США Таблица, из которой я получаю информацию, содержит следующие столбцы:

  • SalesQuotaKey (PK, int, NOT NULL)
  • Ключ сотрудника (FK, int, NOT NULL)
  • DateKey (FK, int, NOT NULL)
  • Календарный год (smallint, НЕ NULL)
  • Квартал календаря (tinyint, НЕ NULL)
  • SalesAmountQuota (деньги, НЕ NULL)
  • Дата (datetime, НЕ NULL)

В столбце, содержащем SalesAmountQuota, указана квартальная квота.

Пример данных и ожидаемый результат для одного EmployeeID, указанного ниже Код сотрудника ДатаКод Год квартал 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 key 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

1 Ответ

4 голосов
/ 19 марта 2019

Иметь производную таблицу, в которой вы SUM() годовая квота для каждого сотрудника, используйте условие HAVING, чтобы убедиться, что все 4 квартала присутствуют для каждого года.Затем выберите максимальную и минимальную годовую квоту:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...