Как применить фильтр к каждой строке после группы в SQL

У меня есть таблица - Таблица = emp

eno ename designation sal   mgr  deptno
1   aaa   salesman    7000  2    10
2   bbb   manager     17000 3    10
3   ccc   president   40000 null 30
4   ddd   clerk       5000  5    20
5   eee   manager     20000 3    20

Q) Сколько человек за работу зарабатывает более 10000?

я хочу результат -

designation  count(*)
salesman     0
manager      2
clerk        0
president    1

query-

SELECT designation, count(*) FROM emp WHERE sal>10000 GROUP BY designation;

получить результат-

designation count(*)
manager     2
president   1

Подскажите пожалуйста, как применить фильтр к каждой строке после предложения group by?

2 ответа

SELECT designation, sum(case when sal > 10000 then 1 else 0 end) as count
FROM emp 
GROUP BY designation;

Используйте функции SUM AND GROUP BY:

  SELECT designation, SUM(CASE WHEN sal > 10000 THEN 1 ELSE 0 END) AS count
  FROM Your_table 
  GROUP BY designation;
Другие вопросы по тегам