SQL选择所有ID的高于平均水平

Posted

技术标签:

【中文标题】SQL选择所有ID的高于平均水平【英文标题】:SQL select the all ID's above average 【发布时间】:2020-06-15 10:30:49 【问题描述】:

我有一个名为航班的表格,其中包含以下列:

DEP_DELAY, ID  

我想选择所有高于平均 DEP_DELAY 的 ID 并将这些 ID 一起统计,以了解有多少 ID 高于平均 DEP_DELAY。

我试过这个:

select avg(DEP_DELAY), count(ID)
from flights
group by DEP_DELAY
having DEP_DELAY > (select avg(DEP_DELAY) from flights)

但是这个行不通,如果有任何建议,我将不胜感激。

【问题讨论】:

【参考方案1】:

嗯。 . .您希望 having 子句作为 where 子句。并且在外部查询中没有group by,因为您只需要一行:

select avg(f.DEP_DELAY), count(*)
from flights f
where f.DEP_DELAY > (select avg(f2.DEP_DELAY) from flights f2);

【讨论】:

这是唯一可行的方法吗? @ideasia 。 . .不,SQL 通常有很多表达逻辑的方式。这是一个非常合理的做法。窗口函数也是一种非常合理的方法。

以上是关于SQL选择所有ID的高于平均水平的主要内容,如果未能解决你的问题,请参考以下文章

SQL将值与特定年份的平均值进行比较

SQL:为 ID 高于先前且满足条件的条目选择不同的计数

计算得分高于平均分的男性和女性

选择平均值小于指定值的所有条目

结合3个表,根据平均分取名字

选择 2 个日期之间的记录平均值 SQL Netezza