有个问题:
使用适当的列名称,显示 obs 类型“CONT”的允许 ID 和平均 obs 值,其中 CONT 的平均 obs 值 >= 40。
假设承认是表1,观察是表2,但具有相同的主键Admit_id。我试图得到 obs 值平均值大于 40 的结果,但是
但是我得到了这个错误:'where 子句中的未知列'平均'。这里有什么解决办法吗?
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;
最佳答案
您应该尝试连接两个表
并且您不能在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
正在一家餐厅下订单....
FROM
和 JOIN
表示您想从哪个菜单订购......
WHERE
是您想要对订单进行的任何自定义(也称为无蘑菇)....
GROUP BY
以及之后的任何内容都是在订单完成并在您的餐 table 上之后...
ORDER BY
是说您首先想要什么菜(也就是我想要主菜,然后是甜点,然后是开胃菜)。
HAVING
可用于挑出意外留在盘子上的蘑菇......
等等..
我知道这是一个奇怪的类比,但它是理解它如何工作的好方法..
在使用选择创建该表之前,无法引用表的别名,您也可以将其设为子选择,并使用 WHERE 执行相同的操作,如下所示
SELECT *
FROM
( ... your_inner_select -- without the HAVING
)t -- every table must have an alias
WHERE t.Average >=40
关于Mysql 数据库 - 平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26194842/