Amazon Redshiftを使用してデータを照会しています。私は、各四半期グループ内で最も収益を上げたトップ4の製品を選択したいと考えています。私は窓関数を使って四半期内の製品ごとの収益の合計値を計算し、別のウィンドウ関数を使用して各グループの上位4項目を選択しました。私のコードは次のとおりです。窓関数は節by by節でサポートされていません
SELECT es.itemid,es.total_Revenue,es.quarter
FROM (
SELECT SALE_CET.itemid
--get total revenue per quarter
,SUM(SALE_CET.totalseller) OVER
(PARTITION BY SALE_CET.itemid,SALE_CET.quarter) AS total_Revenue
,SALE_CET.quarter
--Rank the data by total revenue within each group
,ROW_NUMBER() OVER
(PARTITION BY SALE_CET.quarter ORDER BY total_Revenue DESC
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS ra
FROM SALE_CET) es
WHERE es.ra <=4
私はorder-by句で集計値を使用できないことがあります。しかし、レコードを四半期ごとのアイテムごとの総収入で注文したい場合は、どのように実装できますか?
ありがとうございました。
SALE_CETテーブルは、CTEから作成された一時テーブルです。 CREATE TABLEコマンドは次のようになります:
WITH SALE_CET (userid,itemid, totalseller,year,month,quarter,dayofyear) AS
(SELECT userid
,itemid
,itemprice*orderqty AS TotalSeller
,DATEPART (year, orderdatetime) AS year
,DATEPART (month, orderdatetime) AS month
,DATEPART (quarter, orderdatetime) AS quarter
,DATEPART (dayofyear, orderdatetime) AS dayofyear
FROM sales)
'SALE_CET'を作成するために使用した' create table'を提供してください。 – redneb
それは何であれ、特定のエラーが発生していますか?クエリの最後にORDER BY es.total_Revenueを追加するだけで済みます。それは派生テーブルの外側の選択ですので、なぜ動作しないのか分かりません。 – Matt
@Matt、こんにちはマット、あなたの提案に感謝します。外部クエリで "ORDER BY quarter、total_Revenue DESC"を使用すると、期待される順序ですべてのアイテムを表示できます。しかし、各カテゴリ(ここでは四半期)の上位4項目を選択するには、 –