Mysql 数据库 - 平均值

标签 mysql sql average

有个问题:

使用适当的列名称,显示 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 正在一家餐厅下订单....
FROMJOIN 表示您想从哪个菜单订购......
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/

相关文章:

sql - 业务逻辑放在哪里?

mysql - MariaDB:选择 val_1、max(value_2)、按 value_3 分组

.net - 如何在我的数据库中安全地存储第三方 Web 服务的密码?

java - 一次仅使用 2 个成员的平均值查找数组的平均值

c++ - 在球员评分程序中显示低于平均分数

mysql - 使用带有内连接的 group by 时得到错误的总和

php - 在两个独立的 Yii Web 应用程序之间传递数据

Python numpy 平均

PHP foreach 在每个级别嵌套具有可变元素的列表?

mysql - 如何使用 Joomla 的 quoteName() 为列名数组分配别名?