从MySQL的日线行情指标表中,所有股票行情数据中查找连续上涨的股票,按连续上涨天数排序,其中日线行情指标表有交易日期、股票代码code、open、close字段
时间: 2024-09-08 16:04:56 浏览: 92
要从MySQL的日线行情指标表中找出所有连续上涨的股票,并按连续上涨天数排序,可以通过查询连续几天的收盘价(close)来判断是否连续上涨,并计算连续上涨的天数。这里假设您的表名为`stock_data`,表结构包含`date`(交易日期)、`code`(股票代码)、`open`(开盘价)、`close`(收盘价)字段。以下是一个可能的SQL查询实现示例:
```sql
SELECT
code,
MIN(date) AS start_date,
MAX(date) AS end_date,
COUNT(*) AS consecutive_days
FROM (
SELECT
t1.date,
t1.code,
t1.close,
IF(
t1.close > t2.close,
1,
IF(
t1.close = t2.close,
t2.consecutive上涨, -- 这里假设存在一个字段记录连续上涨的天数
0
)
) AS consecutive上涨
FROM stock_data t1
LEFT JOIN stock_data t2 ON t1.code = t2.code AND DATEDIFF(t1.date, t2.date) = 1
) AS上涨天数表
GROUP BY code,上涨天数表.consecutive上涨
HAVING consecutive上涨 > 1
ORDER BY consecutive上涨 DESC, code, end_date;
```
这个查询做了以下几步:
1. 使用自连接查询,将表自身与自身进行连接,比较相邻两天的`close`值来确定是否为连续上涨。
2. 使用`IF`函数来判断如果当天的`close`比前一天的`close`大,则认为是连续上涨的天数,否则需要检查是否为平盘,如果平盘则继承前一天的连续上涨天数,否则重置为0。
3. 分组并计算每组中连续上涨的天数。
4. 使用`HAVING`子句过滤出连续上涨天数大于1的记录。
5. 最后按连续上涨天数降序、股票代码和结束日期排序。
阅读全文