Мне нужно получить общий объем за две четверти, поскольку запрос отображается в операторах CASE
. Третий оператор CASE предназначен для деления общего объема за каждый квартал на общий MK_VOL.
Теперь проблема в том, что MK_VOL для каждого дня - это одно значение, поэтому по сути мне нужно получить MAX каждого дня, а затем SUM на весь квартал, чтобы получить MKT_SHARE (то есть SUM of VOL, деленное наСУММ МК_ВОЛ). Повторим еще раз: для MK_VOL это не просто получение суммы за весь квартал, а МАКС за каждый день, а затем итоговая сумма.
Как вы можете видеть, MK_VOL одинаково для 02-апреля.
Теперь мой третий оператор case пытается это сделать, и я получаю ошибку. Это то, что мне нужно, чтобы помочь или лучше решение.
Я пытался сделать подзапрос, но это тоже не сработало.
Набор данных ниже
DATE Client VOL MK_VOL
----------- -------- ----- -------
01-APR AB 2 45
02-APR AC 3 46
02-APR AG1 26 46
02-APR AG2 48 46
03-APR AD 4 47
06-SEP AF 5 48
07-SEP AF 8 50
Запрос ниже
SELECT CLIENT
, SUM(CASE WHEN DATE BETWEEN '01-JUL-19' AND '30-SEP-19' THEN VOLUME END) AS Q3_VOLUME
, SUM(CASE WHEN DATE BETWEEN '01-APR-19' AND '30-JUN-19' THEN VOLUME END) AS Q2_VOLUME
, SUM(CASE WHEN DATE BETWEEN '01-JUL-19' AND '30-SEP-19' THEN VOLUME END) AS Q3_VOLUME
/ sum(DISTINCT CASE WHEN DATE BETWEEN '01-JUL-19' AND '30-SEP-19' THEN MKT_VOL END) AS MKT_SHARE
FROM TB1
WHERE TRADE_DATE BETWEEN '01-APR-19' AND '30-SEP-19'
GROUP BY CLIENT
Ожидаемый результат должен быть полным VOL / SUM (MAX (MK_VOL) для каждого клиента.