SQL如何在满足LIKE条件时对两列结果执行分组查询
实现方案
根据你的业务需求,可选择以下两种实现方式:
方式1:按 from_fund + to_fund 组合分组
如果你需要将相同转出方+相同转入方的交易划分为同一组,直接在GROUP BY后追加to_fund字段即可。注意不要直接使用SELECT *,SQL规范要求SELECT后非聚合字段必须和GROUP BY的字段对应,建议明确指定查询字段和聚合逻辑,示例如下:
SELECT from_fund, to_fund, COUNT(*) AS transaction_count, SUM(amount) AS total_transaction_amount FROM ks_fund_transaction WHERE (from_fund LIKE '%COIN%' OR to_fund LIKE '%COIN%') GROUP BY from_fund, to_fund;
执行后你的样例数据会返回3组,分组键分别为(COIN SWITCH KUBER,KJSB)、(KJSB,COIN SWITCH KUBER)、(KJSB1,COIN SWITCH KUBER)。
方式2:合并统计COIN作为转入/转出方的对手方交易
如果你需要不管COIN是转出方还是转入方,都将同一交易对手的所有交易合并为一组,可以先将两列拆分为统一的对手方字段再分组,示例如下:
SELECT counterparty, COUNT(*) AS transaction_count, SUM(amount) AS total_amount FROM ( -- COIN为转出方时,对手方为to_fund SELECT to_fund AS counterparty, amount FROM ks_fund_transaction WHERE from_fund LIKE '%COIN%' UNION ALL -- COIN为转入方时,对手方为from_fund SELECT from_fund AS counterparty, amount FROM ks_fund_transaction WHERE to_fund LIKE '%COIN%' ) AS temp GROUP BY counterparty;
执行后你的样例数据会返回2组,分别对应交易对手KJSB(2笔交易,总金额10100)、KJSB1(1笔交易,总金额100)。
内容的提问来源于stack exchange,提问作者Sanket Thakkar
相关产品推荐
相关产品推荐

