繁体   English   中英

如何在sql中编写此SUM查询

[英]how do I write this SUM query in sql

我有两张桌子

操作员表

proportion, name, routeid

(比例保持%的值,例如100 = 100%或50 = 50%,这表明此操作员运行的服务的百分比)

路线表

routeid, frequency 

(频率保持每小时的火车数量)

我现在需要做的是编写一个查询,该查询将汇总某些运营商每小时的火车数量,其中运营商的名称为Arriva。 因此,如果arriva运行某些服务1的100%,并运行服务2的50%,那么它也应该工作。

我在想什么看起来像这样的伪代码

All arriva trains per hour = Frequency * (proportion/100)
Where Operators.name = Arriva

尝试这个

  select SUM((ot.frequency * rt.proportion)/100.0 )
  from operators_table ot 
    join route_table rt on ot.route_id = rt.route_id
  WHERE ot.name = 'Arriva';
SELECT SUM(frequency * proportion/100) total
FROM Operators JOIN Route USING (routeid)
WHERE Operators.name = 'Arriva'
declare @operator table 
(
operatorid int not null identity(1,1) primary key clustered
, name nvarchar(64)
, proportion int--(proportion hold % value e.g 100 = 100% or 50 = 50% this shows the % of services ran by this operator)
, routeid int
)


declare @route table
(
    routeid int not null identity(1,1) primary key clustered
    , frequency int --(frequency holds number of trains per hour)
)

--put your insert statements here

select o.operatorid, o.name, sum(r.frequency * (o.proportion/100)) AllTrainsPerHour
from @operator o
left outer join @route r
on o.routeid = r.routeid
where o.name = 'Arriva'
group by o.operatorid, o.name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM