Как я могу удалить результаты, которые дают мне нулевую сумму, не используя подзапрос? - PullRequest
0 голосов
/ 23 января 2019

У меня не может быть сумм, которые дают мне нулевое значение.Поэтому я использовал подзапрос, чтобы добиться этого.Проблема в том, что подзапросы не являются быстрыми.Как бы вы сделали его более эффективным?

select * from (
      SELECT a,
             b, 
             c, 
             sum(d) as  ftd 
            FROM items f 
            WHERE f.category = 'ANY' AND 
                  f.version = 'V2018' AND 
                  f.month = '01' AND 
                  f.year = '2017'
            Group by  f.a, 
                     f.b, 
                     f.c 
            ORDER BY f.a, 
                     f.b, 
                     f.c
    )where ftd!=0;  

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Вы можете решить эту проблему с помощью предложения HAVING:

SELECT a,
b, 
c, 
sum(d) as  ftd 
FROM items f 
WHERE f.category = 'ANY' AND 
f.version = 'V2018' AND 
f.month = '01' AND 
f.year = '2017'
Group by  f.a, 
f.b, 
f.c 
HAVING SUM(f.d)<>0
ORDER BY f.a, 
f.b, 
f.c
0 голосов
/ 23 января 2019

Использование HAVING

  SELECT a,
         b, 
         c, 
         sum(d) as  ftd 
        FROM items f 
        WHERE f.category = 'ANY' AND 
              f.version = 'V2018' AND 
              f.month = '01' AND 
              f.year = '2017'
        Group by  f.a, 
                 f.b, 
                 f.c 
       HAVING sum(d) != 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...