いいえ、分析関数は必要ありません。とにかく、集計関数と同じクエリに含めるのは困難です。
case
を探しています
もう一度言いますが、GROUPBYに入れるだけです。
select hire_year
, sum(married) as married
, sum(certified) as certified
, sum(religious) as religious
, case when salary > 2000 then 'A'
when salary >= 1000 then 'B'
else 'C' end as salary_class
from employees
group by hire_year
, case when salary > 2000 then 'A'
when salary >= 1000 then 'B'
else 'C' end
count(case when...)
を変更したことに注意してください sum()
へ 。これは、ブール1/0を使用しているため、これは同じように機能しますが、はるかにクリーンです。
同じ理由で、between
を無視しました あなたの給与計算で;給与が2000を超えているかのように、特に必要はありません。最初のCASEはすでに実行されています。