SQL子查询根据另一列的最大平均值显示一列的分组值

时间:2019-06-20 11:55:52

标签: sql db2

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

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 |最高 |

地区名称|平均最高|

1 个答案:

答案 0 :(得分: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;