Oracle SQL:根据另一列获取不同列值的计数
Oracle SQL: Obtain count of distinct column values based on another column
这里有一个示例数据来解释我的情况,
公司信息:
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;
这里有一个示例数据来解释我的情况,
公司信息:
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;