Hive中的ROW_NUMBER()是一個窗口函數,它可以在分組中使用,為每個組內的行分配一個唯一的序號
假設我們有一個名為sales_data
的表,其中包含以下列:id
(訂單ID),product_id
(產品ID),quantity
(銷售數量)和price
(銷售價格)。我們希望計算每個產品的總銷售額,并按產品ID分組??梢允褂肦OW_NUMBER()函數實現這一目標。
以下是使用ROW_NUMBER()函數在分組中計算每個產品的總銷售額的示例:
SELECT
product_id,
SUM(quantity * price) AS total_sales,
ROW_NUMBER() OVER (ORDER BY SUM(quantity * price) DESC) AS sales_rank
FROM
sales_data
GROUP BY
product_id;
在這個查詢中,我們首先計算每個產品的總銷售額(SUM(quantity * price)
),然后使用ROW_NUMBER()
函數按銷售額降序排列產品ID。最后,我們將結果按產品ID分組。
注意,ROW_NUMBER()
函數的OVER
子句用于指定窗口范圍。在這個例子中,我們按銷售額降序排列,因此具有較高銷售額的產品將獲得較低的排名。如果你想按產品ID升序排列,可以省略OVER
子句中的ORDER BY
子句。