-- ================================
-- 农业股票数据处理系统 - 扩展表结构
-- 用于存储Spark处理后的分析结果
-- ================================

-- 技术指标数据表
CREATE TABLE IF NOT EXISTS stock_technical_indicators (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    stock_code VARCHAR(10) NOT NULL COMMENT '股票代码',
    stock_name VARCHAR(100) NOT NULL COMMENT '股票名称',
    trade_date DATE NOT NULL COMMENT '交易日期',
    close_price DECIMAL(10,2) COMMENT '收盘价',
    ma5 DECIMAL(10,2) COMMENT '5日移动平均',
    ma10 DECIMAL(10,2) COMMENT '10日移动平均',
    ma20 DECIMAL(10,2) COMMENT '20日移动平均',
    ma30 DECIMAL(10,2) COMMENT '30日移动平均',
    rsi DECIMAL(5,2) COMMENT 'RSI相对强弱指标',
    macd_dif DECIMAL(10,4) COMMENT 'MACD DIF值',
    macd_dea DECIMAL(10,4) COMMENT 'MACD DEA值',
    bb_upper DECIMAL(10,2) COMMENT '布林带上轨',
    bb_middle DECIMAL(10,2) COMMENT '布林带中轨',
    bb_lower DECIMAL(10,2) COMMENT '布林带下轨',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='股票技术指标表';

-- 创建索引
CREATE INDEX idx_technical_stock ON stock_technical_indicators(stock_code);
CREATE INDEX idx_technical_date ON stock_technical_indicators(trade_date);
CREATE INDEX idx_technical_stock_date ON stock_technical_indicators(stock_code, trade_date);

-- 行业分析表
CREATE TABLE IF NOT EXISTS industry_analysis (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    industry VARCHAR(50) NOT NULL COMMENT '行业名称',
    analysis_date DATE NOT NULL COMMENT '分析日期',
    stock_count INT COMMENT '股票数量',
    avg_change_percent DECIMAL(5,2) COMMENT '平均涨跌幅',
    total_market_cap DECIMAL(15,2) COMMENT '行业总市值',
    total_volume BIGINT COMMENT '行业总成交量',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='行业分析表';

-- 创建索引
CREATE INDEX idx_industry_date ON industry_analysis(analysis_date);
CREATE INDEX idx_industry_name ON industry_analysis(industry);
CREATE INDEX idx_industry_date_name ON industry_analysis(analysis_date, industry);

-- 市场趋势表
CREATE TABLE IF NOT EXISTS market_trends (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    trade_date DATE NOT NULL COMMENT '交易日期',
    avg_price DECIMAL(10,2) COMMENT '平均价格',
    avg_change_percent DECIMAL(5,2) COMMENT '平均涨跌幅',
    total_volume BIGINT COMMENT '总成交量',
    total_turnover DECIMAL(15,2) COMMENT '总成交额',
    stock_count INT COMMENT '股票数量',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='市场趋势表';

-- 创建索引
CREATE INDEX idx_trends_date ON market_trends(trade_date);

-- 为已有的market_analysis表添加唯一索引（防止重复数据）
CREATE UNIQUE INDEX idx_market_analysis_date ON market_analysis(analysis_date);

-- ================================
-- 示例查询语句
-- ================================

-- 查询最新的市场分析数据
-- SELECT * FROM market_analysis ORDER BY analysis_date DESC LIMIT 1;

-- 查询特定股票的技术指标
-- SELECT * FROM stock_technical_indicators 
-- WHERE stock_code = 'sz000876' 
-- ORDER BY trade_date DESC LIMIT 30;

-- 查询行业表现排行
-- SELECT industry, avg_change_percent, stock_count 
-- FROM industry_analysis 
-- WHERE analysis_date = (SELECT MAX(analysis_date) FROM industry_analysis)
-- ORDER BY avg_change_percent DESC;

-- 查询市场趋势
-- SELECT trade_date, avg_change_percent, total_volume 
-- FROM market_trends 
-- ORDER BY trade_date DESC LIMIT 30; 