根据条件,在聚合期间无法获得准确的计数

问题描述 投票:0回答:2

我有一个名为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。

我的查询中有什么问题吗?

sql hive bigdata
2个回答
1
投票

你可以尝试下面使用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

1
投票

用例表达式

select Designation,count(Designation) as DesCount,
sum(case when salaryScale>0 then 1 else 0 end) as scaleCount 
from table_name  
group by Designation
© www.soinside.com 2019 - 2024. All rights reserved.