ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 244|回复: 6

[PL/SQL] 如何用Over()函数实现下面这个需求

[复制链接]
论坛徽章:
1
秀才
日期:2017-09-25 15:10:56
发表于 2017-12-4 15:08 | 显示全部楼层 |阅读模式
10pub币
本帖最后由 wa47750033 于 2017-12-4 15:54 编辑

表Demond_201730 原本数据如下:
Num1 代表年份,num2 代表销量
num1   num2
1        100
2        80
3        110
4        120
5        70
6        140
7        150
8        160
9        155---注意这里
10        170
问题:
如何用Over()开窗函数选出---只有当月的销量大于以往销量的月份所对应的资料
结果应当如下:           
num1 num2            
1         100            
3         110            
4         120            
6         140            
7         150            
8         160
10        170
---这里第num1=9对应的行没有被选择。

最佳答案

查看完整内容

SELECT num1, num2 FROM (SELECT a.*,NVL(MAX(num2)OVER (ORDER BY num1 ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING),0) num FROM demond_201730 a) WHERE num2 > num;
认证徽章
论坛徽章:
5
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:29鲜花蛋
日期:2011-12-20 16:06:45娜美
日期:2017-12-15 13:56:33技术图书徽章
日期:2017-11-17 09:13:02妮可·罗宾
日期:2017-11-17 10:43:23
发表于 2017-12-4 15:08 | 显示全部楼层
SELECT num1, num2 FROM
(SELECT a.*,NVL(MAX(num2)OVER (ORDER BY num1 ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING),0) num FROM demond_201730 a)
WHERE num2 > num;

使用道具 举报

回复
论坛徽章:
116
现任管理团队成员
日期:2011-05-07 01:45:08娜美
日期:2017-08-29 10:15:28
发表于 2017-12-4 15:35 | 显示全部楼层
你这是让大家猜需求逻辑么?
来自苹果客户端来自客户端

使用道具 举报

回复
认证徽章
论坛徽章:
5
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:29鲜花蛋
日期:2011-12-20 16:06:45娜美
日期:2017-12-15 13:56:33技术图书徽章
日期:2017-11-17 09:13:02妮可·罗宾
日期:2017-11-17 10:43:23
发表于 2017-12-4 15:47 | 显示全部楼层
guocun09 发表于 2017-12-4 15:44
SELECT num1, num2 FROM
(SELECT a.*,NVL(MAX(num2)OVER (ORDER BY num1 ROWS BETWEEN UNBOUNDED PRECEDI ...

參考: http://www.itpub.net/thread-2094803-1-1.html

使用道具 举报

回复
论坛徽章:
1
秀才
日期:2017-09-25 15:10:56
 楼主| 发表于 2017-12-4 15:50 | 显示全部楼层
guocun09 发表于 2017-12-4 15:47
參考: http://www.itpub.net/thread-2094803-1-1.html

哈哈,我就是上个星期看到这个帖子,我今天早上想起没找到,我这个在他的基础修改了一下,尤其是第Num1=9的那笔数据,如果照参考帖子楼主的意思 是会被选出来的。

使用道具 举报

回复
论坛徽章:
1
秀才
日期:2017-09-25 15:10:56
 楼主| 发表于 2017-12-4 15:52 | 显示全部楼层
zergduan 发表于 2017-12-4 15:35
你这是让大家猜需求逻辑么?

不好意思,我也发现我表述的不好,我马上修改。

使用道具 举报

回复
论坛徽章:
1
秀才
日期:2017-09-25 15:10:56
 楼主| 发表于 2017-12-4 16:01 | 显示全部楼层
guocun09 发表于 2017-12-4 15:08
SELECT num1, num2 FROM
(SELECT a.*,NVL(MAX(num2)OVER (ORDER BY num1 ROWS BETWEEN UNBOUNDED PRECEDI ...

厉害,厉害。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表