我有一个类似下面的表格
year int
month int
symbol string
company_name string
sector string
sub_industry string
state string
avg_open double
avg_close double
avg_low double
avg_high double
avg_volume double
以avg_
开头的字段是指一年中一个月的平均值。我需要找到每个部门的avg_close
平均值最低的年份。
我试图做下面的事情
SELECT sector, year FROM
(
SELECT sector, year, RANK() OVER (ORDER BY s2.yearly_avg_close) AS RANK FROM
( SELECT year,sector, AVG(avg_close) AS yearly_avg_close FROM stock_summary GROUP BY sector, year) s2
) s1
WHERE
s1.RANK = 1;
但是这仅打印一个部门和一年,如下所示
Telecommunications Services 2010
我是蜂巢的新手,正在玩一些玩具模式。有人可以让我知道解决这个问题的正确方法是什么吗?
Hive版本-1.1.0
将sector
包括在partition by
功能的rank()
中:
SELECT sector, year, RANK() OVER (partition by sector ORDER BY s2.yearly_avg_close) AS RANK
如果需要每个year
和sector
的排名,也要添加year
>>
也请阅读此说明,等级如何工作:https://stackoverflow.com/a/55909947/2700344