SQL查询与子查询?

前端之家收集整理的这篇文章主要介绍了SQL查询与子查询?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
感谢您提前提供任何帮助,我无法将我的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子句中并括在括号中.您可以使用普通选择可以使用的任何内容,顶部,排序依据,聚合函数等.您唯一不能使用的是与主体中的表相关联.哦,和CTE.派生表必须是别名.

在先前的示例派生表’a’中,按customerid选择服务器计数.主体将其视为具有CustomerId和ServerCount列的表,可以用作所有列出的表中的任何列.在设置和’a’之间执行customerid连接.由于这是1:1的关系(两个表在给定customerid的情况下产生单行),因此不会发生重复.

原文链接:https://www.f2er.com/mssql/78284.html

猜你在找的MsSQL相关文章