Oracle SQL:获得基于另一列的不同列值的计数

问题描述

这里有一个样本数据来说明我的情况,

CompanyInfo:

Name,Company,Location,Completed,Pending
Andy      AA        Home        4         2
Jim       AA        Office      3         3
Dahli     AA        Home        4         2
Monica    AA        Home        4         2
Chandler  AA    Home-Office     1         0
Ashley    AA    Home-Office     1         0

最后三列有重复的信息,我正在尝试获取相互绑定的位置数(已完成和未决)。因此输出如下所示,

   Company,Count(Locations),Count( Completed+Pending > 0),AA            3                   3

为什么Count(Completed + Pending> 0)是3? “家庭”,“办公室”和“家庭办公室”列只有三种独特的组合,其中“完成” +“待决”之和> 0。

我确实在下面尝试过,但是它给了我(AA,3,6),因为它正在处理所有6行以获取计数。

select Company,count(distinct Location),SUM (
               CASE
                  WHEN (Completed + Pending) > 0 THEN 1
                  ELSE 0
               END)
               AS Total
       From CompanyInfo
       group by Company;

有指针吗?

解决方法

认为,您需要有条件的count(distinct)

select Company,count(distinct Location),count(distinct case when Completed + Pending > 0 then location end)
from CompanyInfo
group by Company;

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...