这个建议用sql查询【Oracle】排名,
①当数据都是0是 如果想要排名一样,可以用:
select rank() over(partition by 某产品 order by 到货数量 nulls last) as 排名 from table;
或者
select dense_rank() over(partition by 某产品 order by 到货数量 nulls last) as 排名 from table;
两个的区别是,后者是连续排名名次不会隔空,比如1 2 2 2 3 4;前者会隔空 1 2 2 2 5 6
②当数据都是0是 如果想要排名不一样,可以用:
select row_number() over(partition by 某产品 order by 到货数量 nulls last) as 排名 from table;
如果数据相同时有要求根据名称优先排序,可以在order by 到货数量后再加上(,名称 asc)
以上用法查询排名时 partition by 某产品 可以不写,看需求有没有按分类各自排名