首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

一条语句,蛋疼着呢,该怎么解决

2012-01-20 
一条语句,蛋疼着呢idnamegrade1小明902小刚883小红1004小明1005小刚906小红80我要查出这个效果:3小红1004

一条语句,蛋疼着呢
id name grade
 1 小明 90
 2 小刚 88
 3 小红 100
 4 小明 100
 5 小刚 90
 6 小红 80

我要查出这个效果: 3 小红 100
  4 小明 100
  5 小刚 90
-----------------------------
  1 小明 90 
  2 小刚 88
  6 小红 80
------------------------------
也就是说,每个人的分数最高的排一起,第2高的排一起,依次类推  

order by grade? 如果小明的分数排的2的比其他人第一的高就不对了

[解决办法]
这需求确实蛋疼
 是不是还有个"科目"字段啊
 小明两个grade什么意思
[解决办法]
根据人名进行分级,再排序!
[解决办法]
把每个人独自排序 然后选择第几个位置的数据不就可以了吗
用数组吧
[解决办法]
存储过程
[解决办法]
不知道楼主是要用sql 语句完成所有排名并打印出来,还是可以每个一条件执行一句,比如我现在想查第一的可以用:

SQL code
select * from test.score where (grade,name) in (select max(grade) as grade,name from test.score group by name)
[解决办法]
不好意思,上面的语句是在自己的机子上测试的。改一下
SQL code
select * from user where (grade,name) in (select max(grade) as grade,name from user group by name)
[解决办法]
如果是用java代码的话,假设已经有user 实体,可以使用如下代码:
Java code
Comparator<User> comparator = new Comparator<User>(){    public int compare(User u1,User u2){         return u2.getGrade() - u1.getGrade();//排倒序    }};Map<String,List<User>> users = new HashMap<String,List<User>>();//key 为用户名,list 是每个相同用户名的n个实体int index = 1;int length = users.values().iterator().next().size();for(;index<=length;index++){    System.out.println("-------------第"+index+"高分----------");    for(String key;users.keySet()){        User user = users.get(key).get(index);        System.out.println(user.getId()+"\t"+user.getName()+"\t"+user.getGrade());    }}
[解决办法]
挺有意思的,需求明白了,你的要求是什么?用纯sql 还是 纯java?还是什么
[解决办法]
order by grade desc
[解决办法]
2个排序不就可以了
[解决办法]
select *,(
select count(*) from Test001 
where Test001.name=x.name and 
Test001.id<>x.id and 
Test001.grade>=x.grade) as row 
from (select id,name,grade from Test001) as x 
order by row;

[解决办法]
Test001是表名,若是sqlserver2005/2008 或oracle 9之后都有 rownumber 函数就好办多了,
要是想从低到高可是把 Test001.grade>=x.grade 变为 Test001.grade《=x.grade
[解决办法]
Test001是表名,若是sqlserver2005/2008 或oracle 9之后都有 rownumber 函数就好办多了,
要是想从低到高可是把 Test001.grade>=x.grade 变为 Test001.grade《=x.grade

热点排行