我看到一个问题,求助一下各位。
有表的数据如此
Item_Name Manufacturer rank
Item 1 Manu_A 82
Item 2 Manu_A 65
Item 3 Manu_A 41
Item 4 Manu_B 32
Item 5 Manu_C 21
Item 6 Manu_B 19
现在希望得到如此的排序
Item 1 Manu_A 82
Item 4 Manu_B 32
Item 5 Manu_C 21
Item 2 Manu_A 65
Item 6 Manu_B 19
Item 3 Manu_A 41
对待这这些数据可以得到如此效果
SELECT T1.item_name, T1.manufacturer, T1.rank
FROM 表 AS T1
JOIN 表 AS T2
ON T1.manufacturer = T2.manufacturer
AND T1.rank <= T2.rank
GROUP BY T1.item_name, T1.manufacturer, T1.rank
ORDER BY COUNT(*), T1.rank DESC
但是一旦数据变为:
select 'Item 1','Manu_A',82 union
select 'Item 2','Manu_A',60 union
select 'Item 3','Manu_A',9 union
select 'Item 4','Manu_B',32 union
select 'Item 5','Manu_C',21 union
select 'Item 6','Manu_B',19 union
select 'Item 7','Manu_B',89
那么就出现这样的结果:
item_name manufacturer rank
-------------------- -------------------- -----------
Item 7 Manu_B 89
Item 1 Manu_A 82
Item 5 Manu_C 21
Item 2 Manu_A 60
Item 4 Manu_B 32
Item 6 Manu_B 19
Item 3 Manu_A 9
我现在想得到如此的算法,就是不管数据怎么变化,都得到
item_name manufacturer rank
-------------------- -------------------- -----------
Item 1 Manu_A 82
Item 7 Manu_B 89
Item 5 Manu_C 21
Item 2 Manu_A 60
Item 4 Manu_B 32
Item 3 Manu_A 9
Item 6 Manu_B 19
各位,试一试哈!:)