编写 sql 计算指数的5日,10 日移动平均线
时间: 2024-02-06 13:12:06 浏览: 24
假设我们有一张名为`stock_data`的表,表结构如下:
|列名|类型|
|-|-|
|date|日期类型|
|code|股票代码|
|price|股票价格|
那么,可以使用以下 SQL 语句计算 5 日,10 日移动平均线:
```sql
-- 计算 5 日移动平均线
SELECT
t1.date,
t1.code,
t1.price,
AVG(t2.price) AS ma5
FROM
stock_data t1
JOIN stock_data t2 ON t1.code = t2.code AND t2.date BETWEEN DATE_SUB(t1.date, INTERVAL 4 DAY) AND t1.date
GROUP BY
t1.date, t1.code, t1.price
-- 计算 10 日移动平均线
SELECT
t1.date,
t1.code,
t1.price,
AVG(t2.price) AS ma10
FROM
stock_data t1
JOIN stock_data t2 ON t1.code = t2.code AND t2.date BETWEEN DATE_SUB(t1.date, INTERVAL 9 DAY) AND t1.date
GROUP BY
t1.date, t1.code, t1.price
```
解释一下:
- 对于 5 日移动平均线,我们需要计算当天及其前四天的平均值,因此需要通过自连接找到每个日期前四天的数据,然后对这五天的价格取平均值。
- 对于 10 日移动平均线,同理,需要找到每个日期前九天的数据,然后对这十天的价格取平均值。