这里有新鲜出炉的SQL教程,程序狗速度看过来!
结构化查询语言(Structured Query Language)简称SQL(发音:/ˈɛs kjuː ˈɛl/ "S-Q-L"),结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上 工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
本文主要讲解SQL查询排名函数实例,比较实用,希望能给大家做一个参考。
在实际开发中经常会遇到计算某个字段的排名的情况
如下表:totak_sales
现在又如此要求:按sales的逆序排序,要求添加一个sales_rank字段,显示排名顺序
方法:
- SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank
- FROM Total_Sales a1, Total_Sales a2
- WHERE a1.Sales <= a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
- GROUP BY a1.Name, a1.Sales
- ORDER BY a1.Sales DESC, a1.Name DESC;
结果:
或:
- SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank
- FROM Total_Sales a1, Total_Sales a2
- WHERE a1.Sales < a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
- GROUP BY a1.Name, a1.Sales
- ORDER BY a1.Sales DESC, a1.Name DESC;
结果:
由上面的方案,我们可以继续推测,如何选出某项来呢?
比如排名为5的那项内容:
- SELECT * from
- (
- SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank
- FROM Total_Sales a1, Total_Sales a2
- WHERE a1.Sales < a2.Sales or(a1.Sales = a2.Sales and a1.Name = a2.Name)
- GROUP BY a1.Name, a1.Sales
- ORDER BY a1.Sales DESC, a1.Name DESC
- ) as tab WHERE tab.sales_rank = 5;
当然,此时如果将顺序修改为3的话,就不能很好的查找到内容了,这个还是一个弊端,需进行修改,待续
来源: http://www.phperz.com/article/17/0905/339309.html