我正在尝试根据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,不知道如何去做..
答案 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