感谢您提前提供任何帮助,我无法将我的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
解决方法
这是带有计数的未启发版本的派生表:
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
更新 – 尝试解释
派生表用于生成可以连接到查询主体的临时结果集.它被放置在from子句中并括在括号中.您可以使用普通选择可以使用的任何内容,顶部,排序依据,聚合函数等.您唯一不能使用的是与主体中的表相关联.哦,和CTE.派生表必须是别名.
在先前的示例派生表’a’中,按customerid选择服务器计数.主体将其视为具有CustomerId和ServerCount列的表,可以用作所有列出的表中的任何列.在设置和’a’之间执行customerid连接.由于这是1:1的关系(两个表在给定customerid的情况下产生单行),因此不会发生重复.