如何使用GROUP BY结合条件,按相同symbol计算BUY与SELL持仓差值
解决方案:按股票代码统计持仓数量
最终SQL查询
SELECT symbol, SUM(CASE WHEN type = 'BUY' THEN count ELSE -count END) AS position_count FROM transactions WHERE user_id = 1 GROUP BY symbol;
逻辑说明
- GROUP BY结合字段值条件的实现:直接按
symbol分组(确保同一股票代码的交易被归为一组),通过CASE语句在分组内区分type的取值(BUY/SELL),以此实现分组内基于字段值的条件计算,这就是GROUP BY与字段值条件结合的典型用法。 - 持仓数量计算逻辑:对
count字段做条件转换——BUY类型交易保留count原值,SELL类型交易取count的负值,最后对每个symbol的转换后值求和,结果即为BUY总数量减去SELL总数量的最终持仓。
预期查询结果
+--------+----------------+ | symbol | position_count | +--------+----------------+ | AAPL | 3 | | NFLX | 4 | | TSLA | 13 | +--------+----------------+
内容的提问来源于stack exchange,提问作者mipruch
相关产品推荐
相关产品推荐

