[英]Calculate the average of other averages in MySQL
我有这个表,我想计算基于所有用户的平均响应时间cat_id
并从join
基础上, user_id
其存储在另一个表的国家。
根据用户所在的国家/地区查找平均时间的正确方法是什么?
+---------+--------+-------+-------+-------+-------+-------+-------+-------+
| user_id | cat_id | time1 | time2 | time3 | time4 | time5 | time6 | time7 |
+---------+--------+-------+-------+-------+-------+-------+-------+-------+
| 11 | 1 | 10000 | 3500 | 10000 | 10000 | 7000 | 6000 | 6500 |
| 0 | 1 | 6139 | 2640 | 5438 | 8136 | 7157 | 8723 | 4677 |
| 11 | 3 | 7500 | 5500 | 10000 | 5500 | 7500 | 4000 | 9500 |
| 0 | 3 | 7462 | 8907 | 7513 | 4181 | 7275 | 2074 | 4444 |
| 1 | 1 | 8500 | 2000 | 8500 | 1500 | 10000 | 6500 | 10000 |
| 0 | 1 | 8885 | 7240 | 2153 | 6115 | 6330 | 6151 | 4325 |
| 1 | 1 | 10000 | 3000 | 10000 | 5500 | 10000 | 9000 | 10000 |
| 0 | 1 | 6188 | 3280 | 4725 | 5662 | 3344 | 8792 | 7560 |
| 1 | 4 | 4000 | 4500 | 10000 | 5000 | 3000 | 1500 | 2112 |
| 0 | 4 | 2750 | 4861 | 3413 | 4174 | 3080 | 3213 | 7932 |
+---------+--------+-------+-------+-------+-------+-------+-------+-------+
我尝试过: (AVG(time1 + time 2 + ... + time7) / 7)
但是当我交叉检查结果不正确时。
在此先感谢您的帮助:)
首先,您的括号有问题,应该是
AVG((time1 + time2 + ... + time7) / 7)
然后,您可能需要在group by子句中添加一些内容,具体取决于要计算平均值的级别。
首先,您应该计算行(time1 + time2 + ... time7)/7
平均值,然后计算所有行的AVG((time1 + time2 + ... time7)/7)
我认为您的问题是取平均值。 我将首先计算每一行的总和和计数,然后左加以添加国家/地区。 获得表格数据后,您可以汇总国家/地区,类别或两者的平均值并进行平均值计算。 像这样:
select country, cat_id, (sum(total_time)/sum(count)) as avg_response_time
from (
select a.user_id
,a.cat_id
,b.country
,(a.time1 + a.time2 + a.time3 + a.time4 + a.time5 + a.time6 + a.time7) as total_time
,7 as count
from a
left outer join b
on a.user_id = b.user_id
)
group by country, cat_id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.