- 浏览: 1256322 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
ypzhangyx:
这要是个小白,看你的文章就得哭啊
AIX安装weblogic并部署web应用 -
cobly1837:
java encoding参考 -
lvwenwen:
very good! mark
银行业务细分,商业银行业务学习(二) -
waiting:
买过这3本书,的确有奇效!
读《火柴棒医生手记》,周尔晋奇人奇事 -
andy20008:
非NT服务修改JVM内存大小 与 NT服务修改JVM内存大小 ...
JIRA不完全手册
老二难缠,可能是因为皮蓬的原因,
取第二大的消费金额有以下写法,但是我没有找到最好的办法。因为不仅仅要取第二,还得取最大的和其他一些信息,并且这张表有2000万记录,如果分组后再和自己关联,效率肯定非常难看。
为什么就没有象max 这样一个简单易用高效的方法呢? 用起来 就如 maxn(colum,n),那就太幸福了。
function(procedure) recursion 如果DB不支持top rowcount(比如sybase)
declare testCursor cursor for
select max(x) from XX where x not in (select * from #tmp)
open testCursor
fetch testCursor into @x
if(@num <= n) begin
insert into #tmp values...
end
....
select * from #tmp
取第二大的消费金额有以下写法,但是我没有找到最好的办法。因为不仅仅要取第二,还得取最大的和其他一些信息,并且这张表有2000万记录,如果分组后再和自己关联,效率肯定非常难看。
Select * From (Select exp_amt,Id,Rownum idid From (Select t.*,Rownum Id From etl_dzdinfo t Where t.main_crd_no='4518100351400218' And exp_amt Is Not Null And trans_txt = '消费' Order By exp_amt Desc ) tt) Where idid=2 Select exp_amt,Id From ( Select t.*,Row_number() over(Order By exp_amt Desc) Id From etl_dzdinfo t Where t.main_crd_no='4518100351400218' And exp_amt Is Not Null And trans_txt = '消费' ) Where Id=2 Select exp_amt,Id From ( Select t.*,rank() over(Partition By main_crd_no Order By exp_amt Desc) Id From etl_dzdinfo t Where t.main_crd_no='4518100351400218' And exp_amt Is Not Null And trans_txt = '消费' ) Where Id=2 Select exp_amt,Id From ( Select t.*,dense_rank() over(Partition By main_crd_no Order By exp_amt Desc) Id From etl_dzdinfo t Where t.main_crd_no='4518100351400218' And exp_amt Is Not Null And trans_txt = '消费' ) Where Id=2 Select Max(exp_amt) From ( Select Max(exp_amt) max_amt From etl_dzdinfo t Where t.main_crd_no='4518100351400218' And exp_amt Is Not Null And trans_txt = '消费' ) a,( Select t.* From etl_dzdinfo t Where t.main_crd_no='4518100351400218' And exp_amt Is Not Null And trans_txt = '消费') b Where b.exp_amt < a.max_amt
为什么就没有象max 这样一个简单易用高效的方法呢? 用起来 就如 maxn(colum,n),那就太幸福了。
评论
3 楼
eyejava
2007-04-19
to taya: 和我最后一种写法一样
楼上的写法看不懂,能说下思路吗?
楼上的写法看不懂,能说下思路吗?
2 楼
JAVA_ED
2007-04-19
eyejava 写道
老二难缠,可能是因为皮蓬的原因,
取第二大的消费金额有以下写法,但是我没有找到最好的办法。因为不仅仅要取第二,还得取最大的和其他一些信息,并且这张表有2000万记录,如果分组后再和自己关联,效率肯定非常难看。
为什么就没有象max 这样一个简单易用高效的方法呢? 用起来 就如 maxn(colum,n),那就太幸福了。
取第二大的消费金额有以下写法,但是我没有找到最好的办法。因为不仅仅要取第二,还得取最大的和其他一些信息,并且这张表有2000万记录,如果分组后再和自己关联,效率肯定非常难看。
Select * From (Select exp_amt,Id,Rownum idid From (Select t.*,Rownum Id From etl_dzdinfo t Where t.main_crd_no='4518100351400218' And exp_amt Is Not Null And trans_txt = '消费' Order By exp_amt Desc ) tt) Where idid=2 Select exp_amt,Id From ( Select t.*,Row_number() over(Order By exp_amt Desc) Id From etl_dzdinfo t Where t.main_crd_no='4518100351400218' And exp_amt Is Not Null And trans_txt = '消费' ) Where Id=2 Select exp_amt,Id From ( Select t.*,rank() over(Partition By main_crd_no Order By exp_amt Desc) Id From etl_dzdinfo t Where t.main_crd_no='4518100351400218' And exp_amt Is Not Null And trans_txt = '消费' ) Where Id=2 Select exp_amt,Id From ( Select t.*,dense_rank() over(Partition By main_crd_no Order By exp_amt Desc) Id From etl_dzdinfo t Where t.main_crd_no='4518100351400218' And exp_amt Is Not Null And trans_txt = '消费' ) Where Id=2 Select Max(exp_amt) From ( Select Max(exp_amt) max_amt From etl_dzdinfo t Where t.main_crd_no='4518100351400218' And exp_amt Is Not Null And trans_txt = '消费' ) a,( Select t.* From etl_dzdinfo t Where t.main_crd_no='4518100351400218' And exp_amt Is Not Null And trans_txt = '消费') b Where b.exp_amt < a.max_amt
为什么就没有象max 这样一个简单易用高效的方法呢? 用起来 就如 maxn(colum,n),那就太幸福了。
function(procedure) recursion 如果DB不支持top rowcount(比如sybase)
declare testCursor cursor for
select max(x) from XX where x not in (select * from #tmp)
open testCursor
fetch testCursor into @x
if(@num <= n) begin
insert into #tmp values...
end
....
select * from #tmp
1 楼
taya
2007-04-19
来个bt的试试?
自己随便弄了个表试了试
取第2大还是挺快的
可惜没法做到maxn(colum,n)
select id from etl_dzdinfo t1 where 1 = 1 and t1.main_crd_no='4518100351400218' and t1.exp_amt = ( select max(t2.exp_amt) from etl_dzdinfo t2 where 1 = 1 and t2.main_crd_no='4518100351400218' and t2.exp_amt <> ( select max(t3.exp_amt) from etl_dzdinfo t3 and t3.main_crd_no='4518100351400218' ) )
自己随便弄了个表试了试
取第2大还是挺快的
可惜没法做到maxn(colum,n)
发表评论
-
对于超多关联的select SQL,性能优化好像能做的事情很少
2008-05-27 14:44 272714个join的select语句,头大! 能做性能优化修改的地 ... -
data studio的字体设置
2008-05-20 11:42 3078data studio的字体很难整,不支持Unicode的字体 ... -
oracle中over()开窗函数的理解
2008-01-07 15:58 7789开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能 ... -
sqlplus和pl/sql developer对sql 的解析还不一样..
2007-09-06 14:50 4962merge into card f using ( selec ... -
强制中断shell程序不能让sqlplus断开连接?
2007-08-23 14:17 2569强制中断shell程序后去修改表结构,发现说这张表busy.. ... -
两种关联update的性能对比
2007-06-22 15:40 2195a表只有126条记录,b表有140万记录 1. /*car ... -
删除带外键约束的数据
2007-06-19 15:39 6010今天突然发现客户表里面姓名为空的记录竟然有13万之多,日期几乎 ... -
吐血,pl/sql developer的提交忘记点...
2007-04-06 20:57 24881.在给客户演示的时候导致锁表,提交了N次都无动于衷,系统卡死 ... -
oracle merge into 10G增强
2007-04-03 19:52 4238http://www.oracle-base.com/arti ... -
oracle关联update犯错
2007-04-03 19:30 3299Update card a Set (card_limit ... -
oracle强行终止后遗症
2007-03-29 17:37 2382提交了一条sql,目的是 ... -
Starting MySQLCouldn't find MySQL manager or server [FAILED]
2007-03-20 19:01 4857http://bugs.mysql.com/bug.php?i ... -
oracle 中'' 本质竟然是null...
2007-03-13 19:35 1697http://yangtingkun.itpub.net/po ... -
今天安装oracle9i的教训
2007-03-07 16:31 2023Posted: 2006-04-14 20:06 因为电脑上 ... -
DB2 sql存储过程基础
2006-11-02 22:40 9647基本概念: 存储过程即 ... -
删除重复记录
2006-10-24 10:57 2849Friday March 24, 2006 - 10:03am ... -
一窝SQL问题
2006-10-24 11:20 1652Tuesday February 28, 2006 - 03: ... -
left outer join的正确写法
2006-10-24 10:50 3732Monday February 20, 2006 - 02:5 ... -
解决了两个sql问题
2006-10-24 11:20 1570Friday February 17, 2006 - 05:2 ... -
sql:分组后的最大值
2006-10-24 11:35 4103Friday February 10, 2006 - 03:2 ...
相关推荐
T-SQL语句主要用于取n到m条记录,有效的利用SQL 资源
N 结束 取消资格 限期整改 N Y N 列入新合格供应商名单 Y 采购控制流程图 年度销售预测 制订月度采购计划 实施采购(合同/订单/电话等) 临时采购申请 审核、批准 N Y 审核、批准 取 消 Y N 采购物品验收 N Y 制订年度...
1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 声明问题 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 *1.26 main的正确定义是什么...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 4、请写...
1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 13 声明问题 14 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 14 *1.26 main的正确...
例如定义一个包含 N 个指向返回指向字符的指针的函数的指针的数组? o 2.8 函数只定义了一次, 调用了一次, 但编译器提示非法重定义了。 o 2.9 main() 的正确定义是什么? void main() 正确吗? o 2.10 对于没有...
由于全球人口的快速增长和气候变化,未来的水稻生产将在很大程度上取决于制定有效利用水和氮的战略和实践。 因此,该研究着手评估在各种氮和水管理方法下灌溉水稻的农艺,水生产率和经济分析。 为了达到既定目标,...
先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2…),即所有记录放在同一组中进行直接插入排序为止...
作者在网络版CFAQ列表的基础上进行了大幅度的扩充和丰富,结合代码示例,权威而且详细深入地解答了实际学习和工作中最常遇到的495个C语言问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 83 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 84 4、...
R(有效时间)=(N*字节数/记录)/传输速度 D(间隔时间)=块间隔总长/带速=[(N/块化因子)*(块间间隔)]/带速 每块容量=记录长度*块化系数 每块长度=容量/(记录密度) 存储记录的块数=磁带总带长/(每块长度+每块...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 83 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 84 4、...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 90 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 91 4、...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 83 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 84 4、...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 83 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 84 4、...
2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 83 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 84 4、...