大龙的博客
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2012年12月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
留言簿
(43)
给我留言
查看公开留言
查看私人留言
收藏夹
ps
(rss)
随笔档案
2014年10月 (1)
2014年8月 (4)
2014年6月 (1)
2013年12月 (6)
2013年11月 (2)
2013年10月 (5)
2013年9月 (4)
2013年7月 (1)
2013年6月 (2)
2013年3月 (1)
2013年2月 (20)
2013年1月 (10)
2012年12月 (8)
2012年11月 (5)
2012年10月 (9)
2012年9月 (4)
2012年8月 (16)
2012年7月 (8)
2012年6月 (10)
2012年5月 (11)
2012年4月 (3)
2012年3月 (10)
2012年2月 (6)
2012年1月 (4)
2011年12月 (6)
2011年11月 (16)
2011年10月 (32)
2011年9月 (13)
2011年8月 (6)
2011年7月 (27)
2011年6月 (18)
2011年5月 (12)
2011年4月 (2)
2011年3月 (1)
2011年2月 (5)
2011年1月 (24)
2010年12月 (5)
2010年11月 (2)
2010年10月 (3)
2010年9月 (4)
2010年8月 (7)
2010年6月 (13)
2010年5月 (18)
2010年4月 (21)
2010年3月 (6)
2010年2月 (7)
2010年1月 (7)
2009年12月 (7)
2009年11月 (2)
2009年10月 (8)
2009年9月 (19)
2009年8月 (11)
2009年6月 (28)
2009年5月 (35)
2009年4月 (18)
2009年3月 (24)
2009年2月 (13)
2009年1月 (10)
2008年12月 (2)
2008年11月 (6)
2008年10月 (4)
2008年9月 (11)
2008年8月 (18)
2008年7月 (8)
2008年6月 (19)
2008年5月 (9)
2008年4月 (6)
2008年3月 (2)
2008年2月 (4)
2008年1月 (21)
2007年12月 (14)
2007年11月 (4)
2007年10月 (7)
2007年9月 (17)
2007年8月 (10)
2007年7月 (20)
2007年6月 (11)
2007年5月 (8)
2007年4月 (13)
2007年3月 (2)
2007年2月 (6)
2007年1月 (14)
2006年12月 (23)
2006年11月 (15)
2006年10月 (5)
2006年9月 (4)
文章档案
2007年11月 (1)
2006年12月 (1)
阅读排行榜
1. LinuxShell算术运算(49302)
2. Windows XP DDK 的有效下载地址(45101)
3. WinDBG教程(40925)
4. Android 打包签名 从生成keystore到完成签名 -- 转(40652)
5. 在Cygwin上安装编辑器vim (38989)
评论排行榜
1. Windows XP DDK 的有效下载地址(116)
2. 在Cygwin上安装编辑器vim (24)
3. (TCP-over-UDP library):基于UDP协议之上实现通用、可靠、高效的TCP协议 ---------- 转(14)
4. Compuware DriverStudio V3.2(10)
5. 经典好书 (10)
常用链接
我的随笔
我的评论
我参与的随笔
统计
随笔 - 864
文章 - 2
评论 - 378
引用 - 0
最新评论
1. re: 安装Nexus私服
谢谢博主。我刚学搭建nexus,挺不错的。
--做有为青年
2. re: 用slf4j+logback实现多功能日志解决方案 --- 转
谢谢楼主,整个流程非常清楚,照着做了一遍就会了。另外我分享一个logback目前尚存在的bug:当你发现INFO级和ERROR级的日志没有写成功时,上下移动一下配置文件中appender的位置就好了。
--welldone
3. re: LinuxShell算术运算
你这些都验证过吗
--是是是
4. re: 用slf4j+logback实现多功能日志解决方案 --- 转
写的非常好!
--Hello
5. re: (TCP-over-UDP library):基于UDP协议之上实现通用、可靠、高效的TCP协议 ---------- 转
评论内容较长,点击标题查看
--pcplayer
Oracle分组排序查询
最近遇到一场景:
查询所有账户在某天的最新修改的记录
其中,某些账户在同一天内可能不止修改一次。
把此查询按讨论中简化一下,建一数据表
Sql代码
CREATE
TABLE
HW
(DEPID NUMBER,
DEPT VARCHAR2(30),
AMOUNT NUMBER);
插入一些测试数据:
Sql代码
INSERT
INTO
HW
VALUES
(10,
'北京'
,100);
INSERT
INTO
HW
VALUES
(10,
'上海'
,200);
INSERT
INTO
HW
VALUES
(10,
'南京'
,300);
INSERT
INTO
HW
VALUES
(20,
'山东'
,400);
INSERT
INTO
HW
VALUES
(20,
'河南'
,500);
INSERT
INTO
HW
VALUES
(20,
'河北'
,600);
INSERT
INTO
HW
VALUES
(30,
'湖南'
,700);
INSERT
INTO
HW
VALUES
(30,
'浙江'
,800);
INSERT
INTO
HW
VALUES
(30,
'陕西'
,900);
查询要求是:
要求用sql查询每个分组中amount最大的前两条记录
这里提供两种查询:一种为不用子查询的方法;另一种是使用子查询的方法
不使用子查询语句为: (简单的分析函数的应用, 分析函数还包括rank()over(),dense_rank()over()等)
Sql代码
SELECT
*
FROM
(
SELECT
T.*, ROW_NUMBER() OVER(PARTITION
BY
DEPID
ORDER
BY
AMOUNT
DESC
) RN
FROM
HW T)
WHERE
RN < 3
查询的结果是:
DEPID DEPT AMOUNT RN
---------- ------------------------------ ---------- ----------
10 南京 300 1
10 上海 200 2
20 河北 600 1
20 河南 500 2
30 陕西 900 1
30 浙江 800 2
6 rows selected
使用子查询的语句为:
Sql代码
SELECT
*
FROM
HW tr
WHERE
(
SELECT
COUNT
(*)
FROM
HW
WHERE
tr.DEPID=DEPID
AND
AMOUNT>tr.AMOUNT)< 2
ORDER
BY
DEPID, TR.AMOUNT
DESC
查询结果是:
DEPID DEPT AMOUNT
---------- ------------------------------ ----------
10 南京 300
10 上海 200
20 河北 600
20 河南 500
30 陕西 900
30 浙江 800
6 rows selected
两种查询各有优缺点:
不用子查询的方法利用了Oracle自身的查询方法,效率会高此,但是给移稙带来不利影响
子查询的优点是可用于任何数据库,但是效率差些
posted on 2011-09-16 16:44
大龙
阅读(545)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
Powered by:
C++博客
Copyright © 大龙