Mysql数据库 - 平均值

时间:2014-10-04 16:36:46

标签: mysql sql average

这是一个问题:

使用适当的列名称,显示OB类型为“CONT”的admit id和平均obs值,其中CONT的平均obs值> = 40。 让我们说admit是table1,observe是table2,但主键是Admit_id。我试图获得平均值大于40的结果但是 但是我得到了这个错误:'where子句中的未知列'Average'。这里有解决方案吗?

Select
    ADMIT.Admit_id,
    (SELECT AVG(Obs_value) FROM OBSERVE) AS Average
from
    ADMIT,OBSERVE
Where
    ADMIT.Admit_id=OBSERVE.Admit_id
AND
    OBSERVE.Obs_type = 'CONT'
AND
    Average >=40;

1 个答案:

答案 0 :(得分:1)

你应该尝试加入两个表
,你不能在WHERE内引用别名..它必须是HAVING。所以像这样..

SELECT a.Admit_id, AVG(o.Obs_value) AS Average
FROM ADMIT a
JOIN OBSERVE o ON o.admit_id = a.admit_id
WHERE o.Obs_type = "CONT"
GROUP BY a.Admit_id
HAVING Average >=40;

这样想吧...... SELECT正在餐馆订餐.... FROMJOIN正在说明您要订购的菜单....
WHERE是您想要对订单进行的任何定制(也就是没有蘑菇).... GROUP BY以及订单完成后的任何事情都在您的餐桌上...... ORDER BY正在说你想要的菜(我想要我的主菜然后是甜点然后是开胃菜) HAVING可以用来挑选任何意外留在盘子上的蘑菇....... 等等。我知道这是一个奇怪的比喻,但它是理解它如何运作的好方法。
在使用select创建该表之前,无法引用表的别名,也可以将其作为子选择,并使用WHERE执行相同的操作

SELECT *
FROM 
( ... your_inner_select -- without the HAVING
)t -- every table must have an alias
WHERE t.Average >=40