当前位置:编程学习 > C#/ASP.NET >>

又见分数算排名问题

大家应该都知道比较典型的一个SQL表

C_CLASS    C_NAME        C_MARKS       RANK
---------- ---------- ---------- ----------
语文       张三              100          1
语文       李四               90          2
语文       王五               80          3
数学       李四               80          3
数学       张三               70          5
数学       王五               60          6


现在的需求是:  有2个队  红队、蓝队 各自队员有积分 如何算整体排名?

比如表是这样:

C_Id    C_NAME           C_H       C_L
---------- ---------- ---------- ----------
1       1号              100          100
2       2号              90           80
3       3号              80           85
4       1号              80           75
5       2号              70           65
6       3号              60           60

C_ID 是序号  C_NAME 是队员(每个队固定3个队员) C_H 红队每个队员分数  C_L 蓝队每个队员分数

现我已经用dense_rank() over 实现了单个队的队员分数排名  需要算2个队的整体排名  意思就是这6个人的排名

且排名是连续的。
   --------------------编程问答-------------------- --------------------编程问答-------------------- 算出每个人的分数,再排名。 --------------------编程问答-------------------- 没看明白 --------------------编程问答-------------------- 分别求出C_H C_L两组的平均数 在对比? --------------------编程问答-------------------- 2个队每个队员的分数都已经有了,且分数也许会一样,这就存在同名次,现已算出每个队员在各自队里的排名,需要算出的是2个队6个人的整体排名,就是说需要将上表C_H(红队队员分数)、C_L(蓝队队员分数)做排名,dense_rank() over 这个函数统计单个列的数据可以,现在2个列棘手了.........
有哪位高手算法或SQL查询厉害的,试试。 --------------------编程问答-------------------- select * ,dense_rank() over( order by c_h+c_l desc) as rn from tb 
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,