【问题标题】:SQL sub query displaying a grouped value of one column based on the maximum average value in anotherSQL 子查询根据另一列的最大平均值显示一列的分组值
【发布时间】:2019-06-20 20:01:47
【问题描述】:

我正在尝试根据 community_area_name 计算安全评分的最大平均值。我可以通过查询来做到这一点:

SELECT  max(average_safty) as maximum from (select community_area_name, AVG(safety_score) as average_safty from CHICAGO_PUBLIC_SCHOOLS group by community_area_name) ;

但现在我想为结果显示 community_area_name。我试过了:

SELECT  max(average_safty) as maximum, community_area_name from(select community_area_name, AVG(safety_score) as average_safty from CHICAGO_PUBLIC_SCHOOLS group by community_area_name) ;

但是我得到一个错误,因为它需要被分组。当我像这样分组时:

%sql SELECT  max(average_safty) as maximum, community_area_name from (select community_area_name, AVG(safety_score) as average_safty from CHICAGO_PUBLIC_SCHOOLS group by community_area_name) group by community_area_name ;

结果是每个 community_area_name 的所有平均值的列表,而不仅仅是最大平均值。

我如何得到如下结果?:

|community_area_name |最大|

地区名称 |最高平均值 |

【问题讨论】:

    标签: sql db2


    【解决方案1】:

    使用order byfetch 子句:

    select community_area_name, avg(safety_score) as average_safety
    from CHICAGO_PUBLIC_SCHOOLS
    group by community_area_name
    order by average_safety desc
    fetch first 1 row only;
    

    【讨论】:

    • 嗨,谢谢您的意见。我实际上是想找出是否可以在不限制行的情况下获得单个结果。但是,您的建议当然是一个实用的解决方案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2021-07-25
    • 2016-06-11
    • 1970-01-01
    • 2012-05-06
    相关资源
    最近更新 更多