如何从股票交易表筛选仅存买入记录、无卖出记录的股票
解决方案:筛选仅存在买入记录的股票
要筛选出只有买入(BUY)记录、无任何卖出(SELL)操作的股票,可以用以下几种SQL实现方式:
方法1:NOT EXISTS子查询
SELECT DISTINCT stock FROM transactions t1 WHERE t1.type = 'BUY' AND NOT EXISTS ( SELECT 1 FROM transactions t2 WHERE t2.stock = t1.stock AND t2.type = 'SELL' );
逻辑说明:
- 先从交易表中筛选所有买入记录的股票
- 通过
NOT EXISTS排除掉存在对应卖出记录的股票 DISTINCT保证每只股票只返回一次
方法2:GROUP BY + HAVING统计
SELECT stock FROM transactions GROUP BY stock HAVING COUNT(DISTINCT type) = 1 AND MAX(type) = 'BUY';
逻辑说明:
- 按股票分组后,
COUNT(DISTINCT type) = 1确保该股票只有一种交易类型 MAX(type) = 'BUY'限定这种唯一的交易类型是买入操作
预期输出结果
STOCKB STOCKD STOCKE
内容的提问来源于stack exchange,提问作者Exception
相关产品推荐
相关产品推荐

