ПОЛУЧИТЬ отчет с условиями «Разное где» - PullRequest
0 голосов
/ 02 июля 2018

У меня есть таблица с полями

TPI
CLICKS
IMPRESSION
CLASSIFY

Мне нужно получить 3 результата

1st) SUM(CLICKS)/SUM(IMPRESSION) * 100 GROUP BY TPI
2nd) SUM(IMPRESSION) WHERE CLASSIFY = "XYZ" GROUP BY TPI
3rd) SUM(IMPRESSION) WHERE CLASSIFY = "ABC" GROUP BY TPI

Желаемый ОП

TPI 1st_data 2nd_data 3rd_data

ГДЕ ТПИ является уникальным в выходе Могу ли я добиться этого в одном запросе?

Заранее спасибо

1 Ответ

0 голосов
/ 02 июля 2018

Условное агрегирование должно работать на вас. Используйте CASE в аргументе sum(), чтобы использовать значение impression только тогда, когда ваше условие на classify выполнено.

SELECT tpi,
       sum(clicks) / sum(impression) * 100 1st_data,
       sum(CASE classify
             WHEN 'XYZ'
               THEN impression
             ELSE
               0
           END) 2nd_data,
       sum(CASE classify
             WHEN 'ABC'
               THEN impression
             ELSE
               0
           END) 3rd_data
       FROM elbat
       GROUP BY tpi;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...