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的高于平均水平的主要内容,如果未能解决你的问题,请参考以下文章