使用忽略连接表的原始表的计数函数

Posted

技术标签:

【中文标题】使用忽略连接表的原始表的计数函数【英文标题】:Using the count function for the original table ignoring the joined table 【发布时间】:2020-10-24 06:44:18 【问题描述】:

假设我有表 Plan,其中包含列 PlanIDAccessIDAccessName

如果我想计算Plan 表中包含AccessID 的计划数量,那么我可以这样做:

select AccessName, COUNT(AccessID)
    from Plan
    group by AccessID, AccessName;

这个的输出是:

介绍第二个表 Customer,其中包含 PlanID 和其他各种不相关的列。如果我想计算使用具有 TypeID 的计划的客户数量,我可以这样做:

select AccessName, Plan.AccessID, COUNT(AccessID) as AccessPop
    from Plan
    inner join Customer on Plan.PlanID = Customer.PlanID 
    group by Plan.AccessID, Plan.AccessName;

这个的输出是:

但是,如果我想在一个查询中同时执行这两项操作,我会遇到一个问题,即我无法计算使用 AccessID 并连接到客户表的计划的原始数量。

一些样本数据:

我的问题是如何将这两者结合到一个查询/选择中?

【问题讨论】:

使用left join Customer 而不是inner join 【参考方案1】:

你可以试试下面的-

select t.AccessName,t.AccessID,totalcnt, AccessPop from
(
select AccessName,AccessID, COUNT(AccessID) as totalcnt
from Plan group by AccessID, AccessName
)t join 
(
select AccessName, Plan.AccessID, COUNT(AccessID) as AccessPop
from Plan inner join Customer on Plan.PlanID = Customer.PlanID 
group by Plan.AccessID, Plan.AccessName
)t1 on t.AccessID=t1.AccessID

【讨论】:

以上是关于使用忽略连接表的原始表的计数函数的主要内容,如果未能解决你的问题,请参考以下文章

对多个表的计数/分组应用聚合函数

R语言table函数和xtabs函数生成三维列联表使用margin.table函数prop.table函数和addmargins函数计算多维列联表的边缘频率值频率计数比例值ftable美化输出

TSQL:外部连接表的计数产生不正确的结果

SQL 2012 将来自多个表的多个查询与连接和计数合并到一个表中

左连接计数来自第二个表的三个属性

EXCEL多条件忽略重复值忽略空值计数