在实际开发中经常会遇到计算某个字段的排名的情况
如下表:totak_sales
现在又如此要求:按sales的逆序排序,要求添加一个sales_rank字段,显示排名顺序
方法:
代码如下: SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_RankFROM Total_Sales a1, Total_Sales a2WHERE a1.Sales <= a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)GROUP BY a1.Name, a1.SalesORDER BY a1.Sales DESC, a1.Name DESC;
结果:
或:
代码如下: SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_RankFROM Total_Sales a1, Total_Sales a2WHERE a1.Sales < a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)GROUP BY a1.Name, a1.SalesORDER BY a1.Sales DESC, a1.Name DESC;
结果:
由上面的方案,我们可以继续推测,如何选出某项来呢?
比如排名为5的那项内容:
代码如下: SELECT * from(SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_RankFROM Total_Sales a1, Total_Sales a2WHERE a1.Sales < a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)GROUP BY a1.Name, a1.SalesORDER BY a1.Sales DESC, a1.Name DESC) as tab WHERE tab.sales_rank=5;
下一篇:Spring中怎么实现初始化