用SQL计算名次
来源:互联网 发布:淘宝商家放单群 编辑:程序博客网 时间:2024/06/02 07:41
几天前在CSDN回答别人的问题: SQL怎样取得指定人的名次 ,现将结果招录下来。
一、测试数据:
select A.*
into #tmp_Mark
from (
select id=1, myname='小明', mypass=123
union
select id=2, myname='小花', mypass=122
union
select id=3, myname='小东', mypass=111
union
select id=4, myname='小牛', mypass=122
) A
二、名次按mypass排列,依次递增,mypass值相同时名次并列,即要求结果为:
id myname
mypass
OrderNo 1
小明 123 1 2 小花 122 2 3 小牛 122 2 4 小东 111 3
需要使用临时表生成排序,使用以下语句:
select IDENTITY(int, 1,1) as OrderNo, mypass
into #tmp_Order
from #tmp_Mark group by mypass order by mypass desc
--显示结果
select B.*, A.OrderNo from #tmp_Order A,#tmp_Mark B where A.mypass=B.mypass order by A.OrderNo
--如果只要单独知道小花排序
select OrderNo from #tmp_Order A, #tmp_Mark B where A.mypass=B.mypass and B.myname='小花'
三、名次依mypass排列,mypass值相同名次并列,但计算排名,即:
id mynam
mypass
OrderNo 1
小明 123 1 2 小花 122 2 3 小牛 122 2 4 小东 111 4
这个稍为简单,无需临时表:
select A.*,myOrder=(select count(*) from #tmp_Mark where mypass>a.mypass)+1
from #tmp_Mark A order by myOrder
一、测试数据:
select A.*
into #tmp_Mark
from (
select id=1, myname='小明', mypass=123
union
select id=2, myname='小花', mypass=122
union
select id=3, myname='小东', mypass=111
union
select id=4, myname='小牛', mypass=122
) A
二、名次按mypass排列,依次递增,mypass值相同时名次并列,即要求结果为:
id myname
mypass
OrderNo 1
小明 123 1 2 小花 122 2 3 小牛 122 2 4 小东 111 3
需要使用临时表生成排序,使用以下语句:
select IDENTITY(int, 1,1) as OrderNo, mypass
into #tmp_Order
from #tmp_Mark group by mypass order by mypass desc
--显示结果
select B.*, A.OrderNo from #tmp_Order A,#tmp_Mark B where A.mypass=B.mypass order by A.OrderNo
--如果只要单独知道小花排序
select OrderNo from #tmp_Order A, #tmp_Mark B where A.mypass=B.mypass and B.myname='小花'
三、名次依mypass排列,mypass值相同名次并列,但计算排名,即:
id mynam
mypass
OrderNo 1
小明 123 1 2 小花 122 2 3 小牛 122 2 4 小东 111 4
这个稍为简单,无需临时表:
select A.*,myOrder=(select count(*) from #tmp_Mark where mypass>a.mypass)+1
from #tmp_Mark A order by myOrder
- 用SQL计算名次
- 用SQL计算名次
- 计算名次排序
- 计算名次元素在队列中的名次
- 按照分数进行名次计算、名次排序
- 生成名次的SQL
- 数组个元素名次计算
- 计算名次与按名次排序问题的算法优化
- 【九度OJ】1007【计算名次】
- SQL 获取排名排序后的名次
- 用SQL计算天数
- 用Treap实现名次树
- 工资计算(用SQL来计算)
- 【九度OJ】1167【快速排序】【计算名次】【C实现】
- 趣味SQL:用SQL计算瓷砖费用
- 用sql语句计算年龄
- --排列名次的sql server函数-------------(原创)
- SQL的老题目:查询学生平均成绩及其名次
- 成员初始化的先后顺序
- SOFTWARE CONFIGIURATION MANAGEMENT GUIDBOOK(1995)
- Web搜索引擎设计和实现分析 (ZZ)
- 收藏网址
- MySQL常规管理
- 用SQL计算名次
- 开始Blog了
- Tomcat 中的 BASIC验证
- 九阳真经
- java连接SqlServer2000数据库实例
- 向蚂蚁致敬(1)
- 向蚂蚁(ant)致敬(2)
- telnetd的小问题
- 硬盘安装Debian经历