hivesql开窗函数row number() over (partition by )详解
作者:mmseoamin日期:2023-12-11

ROW_NUMBER() OVER (PARTITION BY ) 是一种窗口函数,用于在每个分区内对行进行编号。它可以用于分析和报表等场景,可以帮助我们对数据进行分组排序,获取排名信息。

具体来说,ROW_NUMBER() 是一种分析函数,它可以根据 ORDER BY 子句中指定的列对行进行排序,并为每个分区内的行分配唯一的连续编号。 PARTITION BY 子句用于定义分区,该子句指定希望分区的列或表达式。行号将在每个分区内分配,然后重新开始为下一个分区分配。

以下是一个示例:

SELECT customer_id, order_date, order_amount,
       ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date) AS row_num
FROM orders

在此示例中,我们对订单表进行排序,并针对每个客户对订单进行分区。每个客户的订单按订单日期递增排序,并使用 ROW_NUMBER() 函数分配连续的行号。

结果将如下所示:

customer_id   order_date   order_amount   row_num
---------------------------------------------------
1             2021-01-01   100           1
1             2021-02-01   200           2
2             2021-01-02   150           1
2             2021-02-02   250           2
2             2021-03-01   300           3

从结果可以看出,每个客户的订单都被分配了一个唯一的行号,行号按日期递增排序。

ROW_NUMBER() OVER (PARTITION BY ) 是一种非常方便的窗口函数,可以帮助我们对数据进行排名和分组,并在每个分区内为行分配唯一的编号。