gpt4 book ai didi

带子查询的SQL Sum?

转载 作者:行者123 更新时间:2023-12-04 04:07:04 27 4
gpt4 key购买 nike

感谢您事先提供的任何帮助,我无法将我的SQL技能与这一项结合起来...
我有两个这样的表:

设置

Customerid     ViewerLimit
       1                   50
       2                   50



发行

Customerid     ServerIP
       1                 stream3
       1                 stream4
       2                 stream3



我想计算每个服务器上的负载。如果客户有多台服务器,则由客户来分担负载,因此客户1在这里将25的负载放在每台服务器上。我想要得到的结果是这样的:

ServerIP      Load
 stream3         75
 stream4         25



我试图做一个和这个类似的求和函数:
sum(viewerlimit/(count # of servers)) as load group by serverip

但是我不能在sum函数内进行子查询。有很多客户,每个客户可能有很多服务器,因此手动操作将变得太复杂。感谢您的投入。

最佳答案

这是在衍生表中计数的非启发式版本:

select serverip, sum (viewerlimit/cast (ServerCount as float)) Load
from
(
select customerid, count(*) ServerCount from distribution group by customerid
) a
inner join settings
on a.customerid = settings.customerid
inner join distribution
on settings.customerid = distribution.customerid
group by serverip

Sql Fiddle to play around

更新-尝试解释

派生表用于生成可以连接到查询主体的临时结果集。它放在from子句中,并用括号括起来。您可以使用普通select可以使用的任何东西,top,order by,聚合函数等。您唯一不能使用的是与主体中的表的关联。哦,还有CTE。派生表必须为别名。

在先前的样本派生表中,“a”按客户ID选择服务器的数量。主体将其视为具有CustomerId和ServerCount列的表,可以用作所有列出的表中的任何列。在设置和“a”之间执行对customerid的联接。因为这是1:1关系(两个表在给定一个customerid的情况下都产生单行),所以不会发生重复。

关于带子查询的SQL Sum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9985674/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com