在Hive中,您可以使用窗口函數row_number()
與子查詢聯用以對結果集進行排序和分區
假設您有一個名為sales_data
的表,其中包含以下列:id
(訂單ID),product_id
(產品ID)和amount
(銷售額)。您想要根據amount
降序排列并計算每個產品的累積銷售額。您可以使用以下查詢實現這一目標:
SELECT
id,
product_id,
amount,
SUM(amount) OVER (PARTITION BY product_id ORDER BY amount DESC) as cumulative_sales
FROM (
SELECT
id,
product_id,
amount,
ROW_NUMBER() OVER (ORDER BY amount DESC) as row_num
FROM
sales_data
) subquery
WHERE
subquery.row_num <= 1;
在這個查詢中,我們首先使用子查詢(別名為subquery
)來計算每個訂單的row_number()
,根據amount
降序排列。然后,在外部查詢中,我們使用窗口函數SUM()
計算每個產品的累積銷售額,將結果集按照product_id
進行分區。最后,我們在WHERE
子句中過濾出累積銷售額最高的產品。