我有一张这样的桌子,我从中得到了总数
call_count
对于特定的
model_id
在里面
PHX
,
SLC
和
SJC
数据中心。
machine_name hour_of_day sec_of_hour meta_date client_id model_id call_count avg median datacenter
machineA 13 168 2014-07-30 00:00:00 Test13N 65 100 38.6382 5 PHX
machineA 13 170 2014-07-30 00:00:00 Test13N 65 200 34.382 4 PHX
machineB 13 168 2014-07-30 00:00:00 Test13N 65 200 33.62 3 SLC
machineB 13 170 2014-07-30 00:00:00 Test13N 65 300 32.60 2 SLC
machineC 13 168 2014-07-30 00:00:00 Test13N 65 400 31.20 6 SJC
machineC 13 170 2014-07-30 00:00:00 Test13N 65 500 39.82 8 SJC
因此,使用以下查询-
SELECT client_id, model_id,
sum(case when datacenter = 'PHX' then call_count END) phx,
sum(case when datacenter = 'SLC' then call_count END) slc,
sum(case when datacenter = 'SJC' then call_count END) sjc
FROM models b
where meta_date= CURDATE()-1
group by client_id, model_id
order by client_id, model_id;
我得到的结果是,对于model_id 65,从phx发出了300个呼叫,从slc发出了500个呼叫,而从sjc数据中心发出了900个呼叫。
client_id model_id phx slc sjc
Test13N 65 300 500 900
问题陈述:-
现在我应该做的是,我还需要展示
avg
PHX、SLC和SJC数据中心针对特定model_id的所有调用所花费的时间。对于
median
以及PHX、SLC和SJC数据中心。
这意味着PHX数据中心中300个呼叫所用的平均时间和PHX数据集中300个呼叫的平均时间是多少。SLC和SJC也是如此。
我想在这里使用加权平均值。由于使用了机器A的上表,PHX数据中心在168秒的时间内,100次呼叫平均耗时38.6382毫秒,在170秒的时间里,200次呼叫平均花费34.382毫秒。
因此,我正在考虑使用加权平均值来计算PHX数据中心的平均值-
(100 * 38.6382 + 200* 34.382) / (100 + 200)
所以最后我需要像这样展示结果-
client_id model_id phx slc sjc phx_avg phx_median slc_avg slc_median sjc_avg sjc_median
Test13N 65 300 500 900
我如何在我当前的sql中容纳上述公式,以便我可以计算PHX中300个调用所用的平均时间和PHX中的300个调用的平均时间。SLC和SJC也是如此。我正在使用mysql数据库。