1

私は2つのテーブルを持っています

演算子テーブル

proportion, name, routeid

(比率保持%値(例:100 = 100%または50 = 50%)これは、このオペレーターによって実行されたサービスの%を示します)

ルートテーブル

routeid, frequency 

(頻度は1時間あたりの列車の数を保持します)

私が今やらなければならないことは、オペレーターの名前がArrivaである特定のオペレーターによる1時間あたりの列車の数を合計するクエリを書くことです。したがって、arrivaが特定のサービス1の100%を実行し、サービス2の50%を実行する場合、それもうまくいくはずです。

私が思っていたのは、この疑似コードのように見えるでしょう

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

3 に答える 3

0

これを試して

  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';
于 2012-11-22T22:35:44.840 に答える
0
SELECT SUM(frequency * proportion/100) total
FROM Operators JOIN Route USING (routeid)
WHERE Operators.name = 'Arriva'
于 2012-11-22T22:35:53.503 に答える
0
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
于 2012-11-22T22:39:00.420 に答える