RANK()
またはその他のウィンドウ機能をサポートしていないSybase ASE 15.7を使用しています。Sybase ASE:グループ化されたカテゴリごとのランクを計算する
商品カテゴリごとにグループ化されたランクを計算しようとしています。
約2百万レコードのPRODUCTS
テーブルを考えてみましょう。
PROD_CATEGORY | PROD_NAME | PROD_SALES
---------------------------------------------
Laptops | Dell Inspiron | 1000
Laptops | Lenovo Thinkpad | 800
Laptops | Dell Latitude | 500
Laptops | Acer Aspire | 1000
Printers | Canon Pixma | 2500
Printers | HP OfficeJet | 800
Printers | HP DeskJet | 1200
Desktops | Lenovo ThinkCentre | 900
Desktops | Asus Chromebox | 300
Desktops | HP Pavilion | 1500
私は以下のような製品カテゴリごとにグループ化されたランクを計算しますSQLクエリの書き込みしようとしています。同じPROD_SALES
価値を持つ製品が結ばランクとその後を生成
PROD_CATEGORY | PROD_NAME | PROD_SALES | SALES_RANK
------------------------------------------------------------
Laptops | Dell Inspiron | 1000 | 1
Laptops | Lenovo Thinkpad | 800 | 2
Laptops | Acer Aspire | 800 | 2
Laptops | Dell Latitude | 500 | 4
Printers | Canon Pixma | 2500 | 1
Printers | HP DeskJet | 1200 | 2
Printers | HP OfficeJet | 800 | 3
Desktops | HP Pavilion | 1500 | 1
Desktops | Lenovo ThinkCentre | 900 | 2
Desktops | Asus Chromebox | 300 | 3
注意をランクにはギャップがあります。
テーブル内のすべての行に対してRANK()
関数を使用しないランクを生成するには、標準SQLクエリhereは、200万行のテーブルに対してうまく機能します。
カテゴリごとにグループ化されたランクを生成するには、クエリが長い時間がかかり実行が完了しなかったため、hereというSQLクエリを試行しました。
Sybase ASEで動作するグループ化されたカテゴリごとにこのランクを生成する方法はありますか?
この質問は、thisに似ていますので、MySQLの質問がありました。