使用忽略连接表的原始表的计数函数
Posted
技术标签:
【中文标题】使用忽略连接表的原始表的计数函数【英文标题】:Using the count function for the original table ignoring the joined table 【发布时间】:2020-10-24 06:44:18 【问题描述】:假设我有表 Plan
,其中包含列 PlanID
、AccessID
和 AccessName
。
如果我想计算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美化输出