网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

SQL怎么查询连续上涨N次的记录

小编今天带大家了解SQL怎么查询连续上涨 N 次的记录,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“SQL怎么查询连续上涨 N 次的记录”的知识吧。

成都创新互联公司专注于青浦网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供青浦营销型网站建设,青浦网站制作、青浦网页设计、青浦网站官网定制、成都小程序开发服务,打造青浦网络公司原创品牌,更为您提供青浦网站排名全网营销落地服务。

用SQL如何查询连续上涨N次的记录?

这个问题用SQL来做很难!

SQL的理论基础是无序集合,早期SQL也没有次序的概念,需要用JOIN造出次序,连续上涨这种问题就非常困难。后来在SQL2003标准中加入了窗口函数,一定程度地缓解了这个问题,但解决连续上涨问题仍然并不轻松。

举个例子:查询连续n天上涨的股票,现有数据库表stock数据如下:

codestockdateclose
0000622015-01-058.91
0000622015-01-068.31
0000622015-01-077.6
0000622015-01-087.93
0000622015-01-097.72

如果查询连续3天上涨的股票,用SQL写出来是这样:

WITH A AS

       (SELECT CODE,STOCKDATE,(CLOSE-LAG(CLOSE) OVER (PARTITION BY CODE ORDER BY STOCKDATE) )CLOSE_UP FROM STOCK),

B AS

       (SELECT CODE,

              CASE WHEN CLOSE_UP>0 AND

                     LAG(CLOSE_UP) OVER (PARTITION BY CODE ORDER BY STOCKDATE)>0 AND

                     LAG(CLOSE_UP,2) OVER (PARTITION BY CODE ORDER BY STOCKDATE)>0

                     THEN 1 ELSE 0 END UPDAYS3 FROM A)

SELECT DISTINCT CODE FROM B WHERE UPDAYS3=1

这里把3天写死进去了,要查询连续5天就会更复杂, n天就不知道怎么写。

对于这种有序的运算,如果使用集算器的SPL语言就会简单很多,只需2行代码:


A
1=connect("mydb").query("select   * from stock order by code, stockdate").group@o(code)
2=A1.select((a=0,~.pselect((a=if(close>close[-1],a+1,0))>=5))>0).(code)

如果要查询n天,只要把A2中的5改成n即可。

SPL基于有序集合实现,对有序计算的支持比较彻底,能清楚表述集合中任意位置的记录,通过绝对/相对位置定位,很容易计算股票每日涨跌。

感谢大家的阅读,以上就是“SQL怎么查询连续上涨 N 次的记录”的全部内容了,学会的朋友赶紧操作起来吧。相信创新互联小编一定会给大家带来更优质的文章。谢谢大家对创新互联网站的支持!


当前题目:SQL怎么查询连续上涨N次的记录
标题来源:http://bjjierui.cn/article/gggphi.html

其他资讯