【问题标题】:Using the count function for the original table ignoring the joined table使用忽略连接表的原始表的计数函数
【发布时间】:2023-04-04 00:08:01
【问题描述】:

假设我有表 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

标签: sql sql-server 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

【讨论】:

    猜你喜欢
    • 2018-10-26
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    相关资源
    最近更新 更多