我正在使用Sybase ASE 15.7,它不支持RANK()
或任何其他窗口函数。
我正在尝试计算按产品类别分组的排名。
考虑以下PRODUCTS
表,其中包含大约200万条记录。
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_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
请注意,具有相同PROD_SALES
值的产品会产生并列排名,后续排名会产生差距。
要为表中的所有行生成不带RANK()
函数的排名,给定here的标准SQL查询适用于包含200万行的表。
要生成按类别分组的排名,我尝试了here给出的SQL查询但没有成功,因为查询需要很长时间而且没有完成执行。
有没有办法为每个分组类别生成可与Sybase ASE一起使用的等级?
这个问题与this提出的问题类似于MySQL。
答案 0 :(得分:0)
您可以使用相关子查询计算排名:
catalog -> categories