【问题标题】:SQL select the all ID's above averageSQL选择所有ID的高于平均水平
【发布时间】: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)

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

【问题讨论】:

    标签: sql select average h2


    【解决方案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 通常有很多表达逻辑的方式。这是一个非常合理的做法。窗口函数也是一种非常合理的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多