我有这个表格,我希望根据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)
但是当我反复核对结果不正确时。
提前感谢您的帮助:)
答案 0 :(得分:0)
首先,你的括号有问题,应该是
AVG((time1 + time2 + ... + time7) / 7)
然后,您可能需要在group by子句中添加一些内容,具体取决于您希望计算平均值的级别。
答案 1 :(得分:0)
您应首先计算行(time1 + time2 + ... time7)/7
的平均值
然后计算所有行的平均值AVG((time1 + time2 + ... time7)/7)
答案 2 :(得分:0)
我认为你的问题是取平均值。我首先计算每行的总和和计数,然后左连接来添加国家。获得表格数据后,您可以汇总并执行跨国家/地区,猫或两者的平均值。像这样:
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