- 浏览: 1268261 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
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 277014个join的select语句,头大! 能做性能优化修改的地 ... -
data studio的字体设置
2008-05-20 11:42 3128data studio的字体很难整,不支持Unicode的字体 ... -
oracle中over()开窗函数的理解
2008-01-07 15:58 7825开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能 ... -
sqlplus和pl/sql developer对sql 的解析还不一样..
2007-09-06 14:50 5001merge into card f using ( selec ... -
强制中断shell程序不能让sqlplus断开连接?
2007-08-23 14:17 2605强制中断shell程序后去修改表结构,发现说这张表busy.. ... -
两种关联update的性能对比
2007-06-22 15:40 2236a表只有126条记录,b表有140万记录 1. /*car ... -
删除带外键约束的数据
2007-06-19 15:39 6042今天突然发现客户表里面姓名为空的记录竟然有13万之多,日期几乎 ... -
吐血,pl/sql developer的提交忘记点...
2007-04-06 20:57 25121.在给客户演示的时候导致锁表,提交了N次都无动于衷,系统卡死 ... -
oracle merge into 10G增强
2007-04-03 19:52 4273http://www.oracle-base.com/arti ... -
oracle关联update犯错
2007-04-03 19:30 3344Update card a Set (card_limit ... -
oracle强行终止后遗症
2007-03-29 17:37 2414提交了一条sql,目的是 ... -
Starting MySQLCouldn't find MySQL manager or server [FAILED]
2007-03-20 19:01 4911http://bugs.mysql.com/bug.php?i ... -
oracle 中'' 本质竟然是null...
2007-03-13 19:35 1723http://yangtingkun.itpub.net/po ... -
今天安装oracle9i的教训
2007-03-07 16:31 2054Posted: 2006-04-14 20:06 因为电脑上 ... -
DB2 sql存储过程基础
2006-11-02 22:40 9696基本概念: 存储过程即 ... -
删除重复记录
2006-10-24 10:57 2881Friday March 24, 2006 - 10:03am ... -
一窝SQL问题
2006-10-24 11:20 1681Tuesday February 28, 2006 - 03: ... -
left outer join的正确写法
2006-10-24 10:50 3759Monday February 20, 2006 - 02:5 ... -
解决了两个sql问题
2006-10-24 11:20 1598Friday February 17, 2006 - 05:2 ... -
sql:分组后的最大值
2006-10-24 11:35 4183Friday February 10, 2006 - 03:2 ...
相关推荐
### SQL取n到m条记录的关键知识点 #### 一、SQL查询特定范围记录的方法与应用场景 在数据库管理中,有时我们需要获取数据表中特定范围的记录。例如,当我们想要显示第n条到第m条记录时,就需要用到特定的SQL语句来...
本篇文章详细介绍了如何使用MySQL实现分组取n条最大记录的功能。通过精心设计的SQL查询语句,我们可以有效地解决这类问题。这种方法不仅适用于上述具体场景,还可以扩展应用于其他类似的需求,例如按不同标准分组并...
标题“分组并排序取前N”涉及到数据库查询中的一个重要概念,这通常指的是在SQL查询中使用`GROUP BY`、`ORDER BY`以及`LIMIT`子句来对数据进行分组、排序,并提取出每组中排名靠前的N条记录。在数据库管理中,这种...
MySQL数据库提供了更为简单的语法来获取前N条记录,即使用`LIMIT`关键字。 **示例代码:** ```sql SELECT t.* FROM tableName t WHERE <其他条件> ORDER BY <排序字段> LIMIT 10; ``` 在这段代码中: - `<其他...
这种方法避免了`NOT IN`子句的性能问题,通过排序后再取前N条记录,提高了查询效率。 每种方法都有其适用场景,根据实际的数据结构和性能需求,可以选择最适合的查询方式。在处理大量数据时,优化查询语句对于提升...
总的来说,从n行m列的稀疏矩阵转换到m行n列的矩阵,本质上是矩阵转置的操作,关键在于正确地处理非零元素的索引变化,并确保在稀疏表示下保持数据结构的有效性和效率。对于实际编程实现,理解并熟练运用合适的数据...
在这篇文档中,我们将详细学习在Hive中如何进行分组取topN,以及如何使用row_number()、rank()和dense_rank()三种窗口函数进行数据排序和排名。 首先,Hive中的数据表创建和数据插入操作是数据查询和分析的前提。...
### n皇后问题之不同解 #### 一、问题概述与背景 n皇后问题是一个经典的计算机科学问题,最早可追溯到19世纪中期。...通过以上步骤,可以有效地利用分支限界法求解n皇后问题,并在特定条件下显示求解结果。
总之,记录状态的动态规划是解决大规模状态问题的有效工具,它结合了位运算的高效性和动态规划的优化策略,能够在保证正确性的前提下,显著降低空间复杂度,提升算法性能。在ACM编程竞赛中,这类技巧是解决问题的...
// 记录解的数量 private int n; public NQueens(int n) { this.n = n; board = new int[n]; count = 0; } public void solveNQueens() { placeQueen(0); // 从第一列开始尝试放置皇后 } private ...
`head(n)`方法返回每个组的前n行。在上面的例子中,`grouped.head(2)`会返回每个班级分数最高的前两个记录。 总结一下,pandas的`groupby`和`head`方法结合使用,可以有效地从分组数据中提取特定记录。这对于数据...
### 触发器实现SQL记录知识点详解 #### 一、背景与需求分析 在很多应用场景中,为了确保数据完整性及可追溯性,我们往往需要记录数据表中的历史变更信息,以便于日后审计或数据分析。例如,在银行系统中,对账户...
1. 有效数字中只应保留一位欠准数字,因此在记录测量数据时,只有最后一位有效数字是欠准数字。 2. 在欠准数字中,要特别注意0的情况。0在数字之间与末尾时均为有效数字。 3. π等常数,具有无限位数的有效数字,在...
首先,我们需要理解问题的核心:找出所有可能的数对(或者数列,取决于题目要求),使得这些数的和等于给定的目标值n,且所有数都在1到n的范围内。这个问题可以通过回溯法或动态规划来解决。 1. **回溯法**: 回溯...
7. **计数排序变体**:利用哈希表记录每个元素出现的次数,然后线性地从小到大扫描这些元素,直到找到第K个最大或最小的数。平均时间复杂度为O(n)。 - **优点**:线性时间复杂度,效率高。 - **缺点**:需要额外...
N皇后问题起源于国际象棋,它展示了如何通过有效的搜索策略来解决复杂问题。这个问题对于理解计算机科学中的搜索算法、回溯法以及问题的解决方案具有重要的教育价值。它可以帮助开发者提高逻辑思维和算法设计能力。 ...
在每次循环中,我们还需要维护一个变量`sum`来记录从$i$到$j`($j = i + r - 1$)的所有石子数量之和。然后,通过枚举合并的分割点`k`(即第$i$堆到第$k$堆为一组,第$k + 1$堆到第$j$堆为另一组),可以计算出所有...
排序算法是计算机科学中至关重要的一部分,它涉及到如何有效地组织和排列数据。无论是处理数据库记录、优化数据结构还是解决复杂问题,排序算法都是基础工具。在本文中,我们将深入探讨内部排序算法,包括它们的工作...
然而,对于大型的N值,算法的效率和内存使用量都会成为关键因素,此时优化和有效的剪枝策略变得至关重要。 总之,N皇后问题是一个很好的研究和学习算法的实例,它涵盖了递归、迭代和优化的回溯等策略。通过比较这些...