这是我的table(为了看得更清楚而隔开)
month country temp
1 AU 15
1 AU 20
2 AU 10
3 AU 20
3 AU 20
3 AU 15
1 CZ 10
1 CZ 5
1 CZ 3
2 CZ 15
2 CZ 15
3 CZ 20
3 CZ 10
1 DE 8
1 DE 2
2 DE 16
2 DE 12
3 DE 21
3 DE 19
我需要显示每月最高平均温度,还需要使用sql显示Hive中的国家。像这样输出
month country max_avg_temp
1 AU 17.5
2 CZ 15
3 DE 20
所以我需要按国家和月份统计平均(临时)组,然后找出每个月的最大值。
我试过这样的方法:
SELECT month, country, MAX(avg_temp) AS max_avg_temp
FROM (SELECT month, country, AVG(temp) as avg_temp FROM temperature
GROUP BY month, country) alias
GROUP BY month;
我也会这样想:
SELECT *
, RANK() OVER (PARTITION BY month ORDER BY avg_temp DESC) AS rank
FROM (SELECT month, country, AVG(temp) AS avg_temp FROM temperature
GROUP BY month, country)
ORDER BY rank
LIMIT 12;
但它没有工作(一些错误)。嵌套的select对于平均工作很好,但是我不知道如何显示最大值。
提前谢谢
2条答案
按热度按时间kcwpcxri1#
只是愚蠢的错误,我忘记了一些“别名”-作为t
它真的显示了每个蛾的最高平均温度
ruoxqz4g2#
使用
row_number()
筛选平均值最高的记录