还是昨天的问题 由于没说清楚 今天贴出数据供大家测试

nianzhang747 2010-12-15 09:46:35
/*
SQLyog Enterprise Trial - MySQL GUI v8.14
MySQL - 5.1.34-community-log
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;

create table `aikidofxtick_t` (
`Symbol` varchar (48),
`StartTime` float ,
`OpenPrx` float ,
`HighPrx` float ,
`LowPrx` float ,
`LastPrx` float
);
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.29059e+012','81.226','81.271','81.211','81.247');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.29059e+012','81.249','81.264','81.208','81.244');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.29059e+012','81.247','81.278','81.224','81.263');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.29059e+012','81.267','81.282','81.23','81.245');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.29059e+012','81.247','81.285','81.232','81.27');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.4955','81.513','81.437','81.4545');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.4545','81.488','81.437','81.4625');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.4535','81.48','81.43','81.4495');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.4545','81.478','81.419','81.4365');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.445','81.47','81.41','81.45');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.4575','81.531','81.441','81.5135');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.5125','81.551','81.492','81.5335');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.532','81.547','81.485','81.5085');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.5125','81.553','81.495','81.5335');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.5435','81.561','81.507','81.532');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.54','81.555','81.499','81.5175');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.524','81.542','81.494','81.519');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.519','81.534','81.484','81.509');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.508','81.544','81.493','81.5145');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.5115','81.529','81.469','81.509');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.5095','81.532','81.472','81.4965');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.5015','81.536','81.48','81.502');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.5255','81.567','81.504','81.5485');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.545','81.561','81.486','81.507');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.4935','81.518','81.459','81.4805');
insert into `aikidofxtick_t` (`Symbol`, `StartTime`, `OpenPrx`, `HighPrx`, `LowPrx`, `LastPrx`) values('AUD_JPY','1.2906e+012','81.4785','81.496','81.429','81.4465');
...全文
201 36 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
fxs_2008 2010-12-16
  • 打赏
  • 举报
回复
up一下了。我觉得分钟线,五分钟线,5的倍数,都是分表存比较好。
nianzhang747 2010-12-15
  • 打赏
  • 举报
回复
mysql> SELECT COUNT(*) FROM aikidofxtick_t;;
+----------+
| COUNT(*) |
+----------+
| 412877 |
+----------+
1 row in set (0.00 sec)


因为里面的数据量很大 所以需要 对子查询进行优化
版主 你的sql语句能不能优化啊、
nianzhang747 2010-12-15
  • 打赏
  • 举报
回复
CREATE TABLE `aikidofxtick_t` (
`Symbol` varchar(16) NOT NULL,
`StartTime` float NOT NULL,
`OpenPrx` float NOT NULL,
`HighPrx` float NOT NULL,
`LowPrx` float NOT NULL,
`LastPrx` float NOT NULL,
KEY `AikidoFxTickIndex1` (`Symbol`),
KEY `AikidoFxTickIndex2` (`StartTime`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
王向飞 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 nianzhang747 的回复:]

OpenPrx 开盘价(该段时间内最初的价格)
HighPrx 最高价 (该段时间内最高的价格)
LowPrx 最低价(该段时间内最低的价格)
LastPrx 收盘价 (该段时间内最后的价格)

比如区间取60min
12:10 价格是 85.23
12:45 价格是 86.52
12.56 价格是 86.52
则开盘价是……
[/Quote]
楼主你这算法想想有问题吗? 要是这一分钟没有成交量?那你价格就应该是上一区间内的,这个算法很复杂,你还是别来这里问了。
ACMAIN_CHM 2010-12-15
  • 打赏
  • 举报
回复
能按下面的方法提供你的测试用例吗?


建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html

1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
nianzhang747 2010-12-15
  • 打赏
  • 举报
回复
如果拿出来查的话1秒 但是放在一起查究18秒?为啥啊
nianzhang747 2010-12-15
  • 打赏
  • 举报
回复
版主的方法是好 但是将
(select OpenPrx from aikidofxtick_t
where FROM_UNIXTIME(StartTime/1000-(StartTime/1000)%(60*60))=FROM_UNIXTIME(a.StartTime/1000-(a.StartTime/1000)%(60*60))
order by StartTime limit 1) as OpenPrx,

子查询放在select 语句里 好像查不出来,查的时候太卡了 效率低
ACMAIN_CHM 2010-12-15
  • 打赏
  • 举报
回复
至于其它时间的你可以把 FROM_UNIXTIME(StartTime/1000-(StartTime/1000)%(60*60))中的(60*60)修改成你所对应的时间间隔 60*60秒 = 3600秒 =1小时 。
ACMAIN_CHM 2010-12-15
  • 打赏
  • 举报
回复
60 分钟的你可以用下面语句。 由于你提供的数据无法进行测试,所以无法验证。


select Symbol,FROM_UNIXTIME(StartTime/1000-(StartTime/1000)%(60*60)) As StartTime,
(select OpenPrx from aikidofxtick_t
where FROM_UNIXTIME(StartTime/1000-(StartTime/1000)%(60*60))=FROM_UNIXTIME(a.StartTime/1000-(a.StartTime/1000)%(60*60))
order by StartTime limit 1) as OpenPrx,
Max(HighPrx) As HighPrx,
min(LowPrx) as LowPrx,
(select LastPrx from aikidofxtick_t
where FROM_UNIXTIME(StartTime/1000-(StartTime/1000)%(60*60))=FROM_UNIXTIME(a.StartTime/1000-(a.StartTime/1000)%(60*60))
order by StartTime desc limit 1) as LastPrx
from aikidofxtick_t a
Group by FROM_UNIXTIME(StartTime/1000-(StartTime/1000)%(60*60))
jiahehao 2010-12-15
  • 打赏
  • 举报
回复
楼主有炒股的内幕消息没~~~~拿来分享一下下~~~~
ACMAIN_CHM 2010-12-15
  • 打赏
  • 举报
回复
[Quote]没关系 数据太多 贴不上来 2010-11-24的 那就算那一天的吧[/Quote]你的时间都是相同的无法区别先后。
'1.29059e+012'
'1.29059e+012'
'1.29059e+012'
'1.29059e+012'
'1.29059e+012'
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',
'1.2906e+012',


楼主你最好自己先测试一下,然后基于这套数据写出你的结果。
WWWWA 2010-12-15
  • 打赏
  • 举报
回复
基于你提供的数据,要求结果贴出来
nianzhang747 2010-12-15
  • 打赏
  • 举报
回复
没关系 数据太多 贴不上来 2010-11-24的 那就算那一天的吧
nianzhang747 2010-12-15
  • 打赏
  • 举报
回复
OpenPrx 开盘价(该段时间内最初的价格)
HighPrx 最高价 (该段时间内最高的价格)
LowPrx 最低价(该段时间内最低的价格)
LastPrx 收盘价 (该段时间内最后的价格)

比如区间取60min
12:10 价格是 85.23
12:45 价格是 86.52
12.56 价格是 86.52
则开盘价是 85.23 收盘价是 86.52

ACMAIN_CHM 2010-12-15
  • 打赏
  • 举报
回复
楼主,你提供的测试数据中的所有日期都是 2010-11-24的,你在#2楼的结果是怎么出来的?对日期需要做偏移运算?
WWWWA 2010-12-15
  • 打赏
  • 举报
回复
`OpenPrx` float ,
`HighPrx` float ,
`LowPrx` float ,
`LastPrx` float
这4个字段是什么意思?
WWWWA 2010-12-15
  • 打赏
  • 举报
回复
你上述结果是否基于你提供的数据?
最高价 最低价 开盘价 收盘价分别是哪些字段
nianzhang747 2010-12-15
  • 打赏
  • 举报
回复
问题是查出
每1min, 5min, 15min, 30min, 60min, 4H, 8H, day 的最高价 最低价 开盘价 收盘价
不知道我的问题谁清楚没?
SELECT Symbol,
FROM_UNIXTIME(StartTime/1000,'%Y%m%d-%H') AS ST,
OpenPrx,MAX(HighPrx) AS HighPrx,
MIN(LowPrx) AS LowPrx,
LastPrx
FROM AikidoFxTick_t t0
WHERE t0.Symbol='CAD_JPY'
GROUP BY ST
ORDER BY ST DESC
LIMIT 200;

这是我查出的每小时的数据 数据样例如下
Symbol	ST	OpenPrx	HighPrx	LowPrx	LastPrx
CAD_JPY 20101213-14 83.296 83.339 83.205 83.3015
CAD_JPY 20101213-12 83.125 83.33 83.077 83.129
CAD_JPY 20101213-09 83.1495 83.221 83.041 83.153
CAD_JPY 20101213-06 83.151 83.26 83.103 83.165
CAD_JPY 20101211-07 83.16 83.185 83.095 83.1475
CAD_JPY 20101211-04 83.1705 83.235 83.07 83.165
CAD_JPY 20101211-01 83.128 83.23 83.03 83.123
CAD_JPY 20101210-23 82.8025 83.233 82.755 82.8325
CAD_JPY 20101210-20 82.6975 82.941 82.575 82.6775

WWWWA 2010-12-15
  • 打赏
  • 举报
回复
要求结果贴出来
cchaha 2010-12-15
  • 打赏
  • 举报
回复
MARK
加载更多回复(16)

56,803

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧