有表chenji
name fenshu
zhang 50
wang 55
li 55
chen 60
xie 20
用一条SQL语句查询,结果如下】
姓名 分数 名次
chen 60 1
wang 55 2
li 55 2
zhang 50 3
xie 20 4
请各位大侠指点一下
name fenshu
zhang 50
wang 55
li 55
chen 60
xie 20
用一条SQL语句查询,结果如下】
姓名 分数 名次
chen 60 1
wang 55 2
li 55 2
zhang 50 3
xie 20 4
请各位大侠指点一下
SELECT 姓名,分数
RANK () OVER (ORDER BY 分数 DESC) 排名
FROM 成绩表db2,oracle应该支持,小数据库就不一定了
from chenji
order by c.fenshu desc;
select t.staff_name as 姓名, rownum as 排名 from t_staff_info t order by t.staff_roleid desc;
少了个desc(降)
asc(升)
from chenji c
order by c.fenshu desc;贴到pl/sql中可直接运行。
降序查询出数据封装List里,Iterator时分别取出分数用count计数,
判断下一条与上一条是否相等,不等+1,相等=赋值。
排名字段在数据库不存在,自定再MODEL里定义。
b.name AS 姓名,
b.fenshu AS 分数,
(SELECT count(*)+1 AS dd FROM chenji AS a WHERE a.fenshu>b.fenshu) AS 名次
FROM chenji AS b
ORDER BY b.fenshu DESC
mysql的,效率可能不是很高!
LZ要的是12234
LS的加点东西就行了。
如果LZ无视效率的话。
在代码里排名不是挺好吗,为什么非要在sql语句里排呢。SELECT (SELECT count(*)+1 FROM (select DISTINCT fenshu from chenji) a where a.fenshu>b.fenshu) AS 排名,b.fenshu,b.name FROM chenji as b order by b.fenshu desc