我有一个名为tbl1的表。其中包含3列empId,Designation和salaryScale
empId Designation salaryScale
Arun Developer 1
Kiran Developer 0
Anu ITA 2
我想得到具有特定指定为DesCount的人的总数,并且需要获得salaryScale> 0的每个指定的salaryScale计数并在指定级别汇总它们。
以下是我的查询和输出
选择Designation,count(Designation)作为DesCount,count(salaryScale)作为scaleCount从tbl1,其中salaryScale> 0 group by Designation;
Designation DesCount scaleCount
Developer 1 1
ITA 1 1
但我的期望是
Designation DesCount scaleCount
Developer 2 1
ITA 1 1
因为对于开发人员指定,总计数为2。
我的查询中有什么问题吗?
你可以尝试下面使用case when expression
并删除where condition
你的条件在哪里过滤掉然后重要,所以你没有得到理想的结果
select Designation,count(Designation) as DesCount,
count(case when salaryScale>0 then 1 end) as scaleCount
from tbl1
group by Designation
用例表达式
select Designation,count(Designation) as DesCount,
sum(case when salaryScale>0 then 1 else 0 end) as scaleCount
from table_name
group by Designation