从2个数据库表列计算平均值

时间:2014-04-22 10:18:09

标签: mysql sql

我正在尝试根据MySQL中2个表格列的值计算平均值。

假设我有这种表结构:

id | user_id | first_score | last_score
1  | 1       |  10         | 60
2  | 1       |  70         | 10
3  | 1       |  100        | NULL

我在这里想要实现的是计算最高值的AVG(即60,70,100)。但看到他们在不同的colums,不知道如何去做..

3 个答案:

答案 0 :(得分:6)

select avg(GREATEST(first_score , last_score))
from the_table

答案 1 :(得分:3)

您可以使用GREATEST功能解决此问题。不幸的是,当一个或两个值为NULL时,它会导致NULL。所以:

select avg( greatest( coalesce(first_score,last_score) , coalesce(last_score,first_score) ) )
from mytable;

答案 2 :(得分:1)

查询应为:

SELECT AVG(GREATEST(IFNULL(first_score,0), IFNULL(last_score,0))) AVERAGE FROM TABLE1;

与任何数字进行比较时,最大值将为NULL。

演示:SQL Fiddle