我想要读取大约8000个文件,每个文件包含不同库存的每日股票价格,并在每个2分钟的时间间隔内选择最新价格,如果在一个区间内没有可用的记录,则写入空白。我的想法是添加一个名为bucketNumber的列来指示记录所属的间隔,创建另一个包含一列值1,2,...,195的表,重复8000次然后加入这两个表。最后为具有相同bucketNumber的记录选择具有最大时间戳的记录。
这是一个很好的工作方式吗?如果是,那么如何有效地生成一列值为1,2,...,195的表重复8000次。
答案 0 :(得分:0)
这是一个查询,它会返回一列1到8000之间的整数值
SELECT thousands.d*1000 + hundreds.d*100 + tens.d*10 + ones.d + 1 AS num
FROM ( SELECT 0 AS d UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6
UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
) ones
CROSS
JOIN ( SELECT 0 AS d UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6
UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
) tens
CROSS
JOIN ( SELECT 0 AS d UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6
UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
) hundreds
CROSS
JOIN ( SELECT 0 AS d UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6
UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
) thousands
HAVING num <= 8000
ORDER BY num
答案 1 :(得分:0)
似乎存储过程似乎是最简单的方法。只需循环每个2分钟的间隔,然后从间隔中具有最长时间的记录中选择价格。您可以包含开始和结束时间的参数,这将提供更通用的解决方案。