我有一个MySql表,包含每日股票报价(开盘价,最高价,最低价,收盘价和成交量),我试图将其转换为每周数据.到目前为止,我有以下功能,适用于高,低和音量:
SELECT MIN(_low), MAX(_high), AVG(_volume),
CONCAT(YEAR(_date), "-", WEEK(_date)) AS myweek
FROM mystockdata
GROUP BY myweek
ORDER BY _date;
我需要在上面的查询中选择_open的第一个实例.因此,例如,如果星期一(特定周)有假期并且星期二开放股票市场,则应从星期二开始选择_开值.同样,close值应该是该周的最后一个_close.
是否可以在MySql中选择类似FIRST()和LAST()的内容,以便上述内容可以包含在单个SELECT中而不是使用嵌套的选择查询?
这是我的表的create语句,用于了解模式:
delimiter $$
CREATE TABLE `mystockdata` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`symbol_id` int(11) NOT NULL,
`_open` decimal(11,2) NOT NULL,
`_high` decimal(11,2) NOT NULL,
`_low` decimal(11,2) NOT NULL,
`_close` decimal(11,2) NOT NULL,
`_volume` bigint(20) NOT NULL,
`add_date` date NOT NULL,
PRIMARY KEY (`id`),
KEY `Symbol_Id` (`symbol_id`,`add_date`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8$$
更新:没有空值,无论何处有假期/周末,该表都没有该日期的任何记录.