楼主: bensonwu
3170 5

[程序分享] 利用RODBC包从PostgreSQL数据库中查询股价日数据和周数据 [推广有奖]

  • 1关注
  • 25粉丝

博士生

7%

还不是VIP/贵宾

-

威望
0
论坛币
22701 个
通用积分
658.9667
学术水平
72 点
热心指数
58 点
信用等级
35 点
经验
3259 点
帖子
182
精华
1
在线时间
51 小时
注册时间
2007-9-24
最后登录
2019-6-11

bensonwu 发表于 2009-8-6 13:12:24 |显示全部楼层
本帖最后由 bensonwu 于 2011-3-4 10:23 编辑

数据库共708.6万行,数据388MB,索引213MB共600MB。查周数据第一次查询587行用281ms,以后几次为47ms和63ms,查日数据2846行,花费125ms。

没有进行过SQL的优化,谁能改进查询请在下面跟贴。下面是我的代码:

library(RODBC)
#连接数据库
channel <- odbcConnect("postgresql35w", uid="postgres", pwd="admin")

#从股价数据库中读入上证日指数
a<- sqlQuery(channel ,"
SELECT
  stockprice.date,
  stockprice.price
FROM
  public.stockprice
WHERE
  stockprice.code = 'SH000001' AND
  stockprice.date > '1997-10-28'
ORDER BY
  stockprice.date ASC")

#从股价数据库中读入深证日指数
sz<- sqlQuery(channel ,"
SELECT
  stockprice.date,
  stockprice.price
FROM
  public.stockprice
WHERE
  stockprice.code = 'SZ399001' AND
  stockprice.date > '1997-10-28'
ORDER BY
  stockprice.date ASC")

#从股价数据库中读入相关股票周价格
gg<- sqlQuery(channel ,"
select * from
  (select LAST_VALUE(date) OVER (PARTITION  BY to_char(date , 'IYYYIW')) as Wdate,
          LAST_VALUE(price)  OVER (PARTITION  BY to_char(date , 'IYYYIW')) as Wprice
    from (
SELECT
    stockprice.date,
    stockprice.price
FROM
    public.stockprice
WHERE
    stockprice.code = 'SH600030' AND
    stockprice.date > '1997-10-28'
ORDER BY
    stockprice.date ASC) as  ap) as week
group by Wdate , Wprice
order by Wdate")
#断开数据库连接
odbcClose(channel)

stata SPSS
dyspider 发表于 2009-12-21 14:34:02 |显示全部楼层
学习了,谢谢:)
回复

使用道具 举报

ssawee 发表于 2009-12-23 13:03:16 |显示全部楼层
有个RPostgresql的包可以不通过ODBC连接上POSTGRESQL
回复

使用道具 举报

bensonwu 发表于 2009-12-24 09:35:10 |显示全部楼层
本帖最后由 bensonwu 于 2011-3-4 10:23 编辑

在pgAdmin III中所做的解释查询:

回复

使用道具 举报

shinehe123 发表于 2018-8-9 15:49:24 |显示全部楼层
R语言貌似很高深!
回复

使用道具 举报

屋檐滴语 发表于 2018-8-9 17:10:28 |显示全部楼层
学习了,谢谢分享!
回复

使用道具 举报

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

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2019-7-20 10:13