Добавить столбец из подзапроса в SELECT основного запроса без применения фильтров из WHERE в основном запросе - PullRequest
2 голосов
/ 21 апреля 2020

Мне нужна помощь по следующей проблеме:

Итак, у меня есть таблица TABLE1 со столбцами Date, Name, STAT1, STAT2, PROBLEM1

У меня такой запрос:

SELECT Date, Name, sum(STAT1), sum(STAT2)
FROM TABLE1
WHERE PROBLEM1 <> 0 
GROUP BY Date, Name

Результат этого запроса - это то, что я хочу, но мне также нужно добавить 2 столбца: TOTALCOUNT, который в основном является количеством строк для каждой группы без применения фильтра (PROBLEM1 <> 0), и COUNTERRORS, который считается для каждой группы, где ПРОБЛЕМА 1 = 0.

Итак, приведем еще один пример. Для Даты А и Имени BI есть 1000 строк. 300 из них имеют PROBLEM1 = 0. Я запускаю первый запрос, который я упомянул выше, и он вычисляет мою сумму (STAT1), сумму (STAT2) на основе 700 строк из-за фильтра WHERE PROBLEM1 <> 0. И мне нужно найти способ добавить два столбца к результату, чтобы в итоге моя таблица выглядела так:

DATE NAME sum(STAT1)  sum(STAT2) TOTALCOUNT COUNTERRORS
A     B       50          3.5      1000        300

Можно ли это сделать? Я пытался использовать подзапросы, но безуспешно.

1 Ответ

2 голосов
/ 21 апреля 2020

Вы можете сделать условное агрегирование:

SELECT Date, Name, 
       sum(case when PROBLEM1 <> 0  then stat1 else 0 end) as stat1, 
       sum(case when PROBLEM1 <> 0  then stat2 else 0 end) as stat2, 
       count(*) as TOTALCOUNT,
       sum(PROBLEM1 = 0) as COUNTERRORS 
FROM TABLE1
GROUP BY Date, Name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...