有如下table
InsertDate Num Lv
2007/04/02 1 1
2007/04/02 2 1
2007/01/01 3 1
2007/02/01 6 1
2007/01/01 2 2
要求的是相同Class中InsertDate最近的Num最大的值。
上面的数据的话,结果应该是
2007/04/02 2 1
我的意见是使用rank函数
select * from (select insertdate,num,lv,rank(...) aRank ) where aRank =1...
同事的意见是使用Max函数
select ..,InserDate,Max(Num),lv from tb where InsertDate =(select max(insertDate) from tb group by lv ) from tb group by lv,insertdate
他说如果数据多的时候,我的SQL会慢,我觉得正好相反。
那位大侠评判一下,那个会快些。然后还请帮忙想个效率更高的方法。
InsertDate Num Lv
2007/04/02 1 1
2007/04/02 2 1
2007/01/01 3 1
2007/02/01 6 1
2007/01/01 2 2
要求的是相同Class中InsertDate最近的Num最大的值。
上面的数据的话,结果应该是
2007/04/02 2 1
我的意见是使用rank函数
select * from (select insertdate,num,lv,rank(...) aRank ) where aRank =1...
同事的意见是使用Max函数
select ..,InserDate,Max(Num),lv from tb where InsertDate =(select max(insertDate) from tb group by lv ) from tb group by lv,insertdate
他说如果数据多的时候,我的SQL会慢,我觉得正好相反。
那位大侠评判一下,那个会快些。然后还请帮忙想个效率更高的方法。
where r <2;试试看
where r <2INSERTDATE NUM LV
----------- ---------- -------
4/2/2007 2 1
----------- ----------- -------
4/2/2007 1 1
4/2/2007 2 1
1/1/2007 1 1
2/1/2007 6 1
1/1/2007 2 2lz看看符合你的要求不?
以目前的数据结果应该是两条。
ERTDATE NUM LV
----------- ---------- -------
4/2/2007 2 1
/1/2007 2 2
对LV分组,再求同ERTDATE中NUM最大的值,那么:
2007/01/01 3 12007/01/01 2 2分属两组,但又同ERTDATE,那以哪种标准区分其最大?
2中方法
1:rownum=1 order by insertdate
2: insertdate=(select max(insertdate) from **)
数据多的时候哪种快?我现在的工作也有这种问题,以前的人用的方法2(存储过程里面),我也不知道哪种快!
楼下的继续!
不知道谁有答案没有。