繁体   English   中英

在最大SQL(配置单元)中嵌套的avg命令

[英]nested avg command in max SQL (hive)

这是我的桌子(间距只是为了更好地查看)

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

所以我需要按国家和月份来计算avg(temp)组,然后找出每个月的最大值。

我尝试过这样的事情:

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可以正常工作,但是我不知道如何显示最大值。

提前致谢

使用row_number()过滤平均记录最高的记录

SELECT month, country, avg_temp
  FROM (  SELECT month,
                 country,
                 AVG (temp) AS avg_temp,
                 ROW_NUMBER ()
                    OVER (PARTITION BY month ORDER BY AVG (temp) DESC)
                    rnk
            FROM temperature
        GROUP BY month, country)  t
 WHERE rnk = 1;

只是愚蠢的错误,我忘了一些“别名” -AS t

SELECT *
, RANK() OVER (PARTITION BY mesic ORDER BY avg_temp DESC) AS rank
FROM (SELECT mesic, stat, AVG(teplota) AS avg_temp FROM teploty
GROUP BY mesic, stat) AS t
ORDER BY rank, mesic
limit 12;

它确实显示了每个飞蛾的最高平均温度

+--------------+-------------+---------------------+-------+--+
| t.month      | t.country   |   t.avg_temp        | rank  |
+--------------+-------------+---------------------+-------+--+
| 1            | AS          | 28.1482513153823    | 1     |
| 2            | AS          | 28.268547273982037  | 1     |
| 3            | AS          | 28.305594514570675  | 1     |
| 4            | PW          | 28.14697855750485   | 1     |
| 5            | PW          | 28.15864931145062   | 1     |
| 6            | MH          | 28.085874246339472  | 1     |
| 7            | AZ          | 29.07906528274055   | 1     |
| 8            | TX          | 28.335826966364785  | 1     |
| 9            | MH          | 28.220327304048165  | 1     |
| 10           | MH          | 28.22359756605796   | 1     |
| 11           | MH          | 28.125538329026583  | 1     |
| 12           | AS          | 27.996042413381048  | 1     |
+--------------+-------------+---------------------+-------+--+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM