You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让嵌套SELECT语句返回多Campaign ID对应的多行结果并优化效率

解决多Campaign ID的SQL统计需求

看来你需要把原本只支持单个Campaign ID的统计SQL改成批量处理,让每个Campaign ID单独返回一行结果对吧?我来帮你调整和优化这段代码:

核心问题分析

你原来的语句只返回1行,大概率是两个原因:

  1. 没有对campaignID进行分组,聚合函数把所有数据合并成了一行统计;
  2. 过滤条件只指定了单个Campaign ID,没有批量匹配多个ID。

修改后的优化版SQL

SELECT 
    campaignID,
    COUNT(ctaS.engagementID) AS numEngagements,
    COUNT(DISTINCT ctaS.targetID) AS numTargets,
    -- 用标准SQL的CASE WHEN替代数据库特定语法,兼容性更好
    SUM(CASE WHEN engagementType = 'click' THEN 1 ELSE 0 END) AS numClicks,
    SUM(CASE WHEN engagementType = 'view' THEN 1 ELSE 0 END) AS numViews
FROM 
    your_table_name ctaS -- 替换成你的实际表名
WHERE 
    -- 用IN批量指定多个Campaign ID,比多个OR更简洁高效
    campaignID IN ('campaign_001', 'campaign_002', 'campaign_003', 'campaign_004', 'campaign_005', 'campaign_006')
GROUP BY 
    campaignID -- 关键!按campaignID分组,每个ID单独返回一行
ORDER BY 
    campaignID; -- 可选,按ID排序让结果更规整

关键优化点说明

  • 分组统计:GROUP BY campaignID是实现“每个ID一行”的核心,没有它聚合函数会把所有数据合并成一行;
  • 批量匹配ID:用IN替代多个OR,语法更简洁,数据库优化器也更容易生成高效的执行计划;
  • 标准SQL兼容:把SUM(engagementType='...')改成CASE WHEN写法,虽然部分数据库(比如MySQL)支持前者,但CASE WHEN是ANSI标准SQL,兼容性更强;
  • 性能小技巧:如果engagementID不会为空,可以用COUNT(*)替代COUNT(ctaS.engagementID),性能会略好一点;如果允许为空,后者能更准确统计有值的记录数。

进阶:返回所有指定ID(包括无数据的)

如果某些Campaign ID在表中没有相关数据,上面的SQL不会返回对应的行。如果需要强制返回所有指定的ID(统计值为0),可以用LEFT JOIN结合临时表实现:

-- 先定义需要统计的所有Campaign ID
WITH target_campaigns AS (
    SELECT 'campaign_001' AS campaignID UNION ALL
    SELECT 'campaign_002' UNION ALL
    SELECT 'campaign_003' UNION ALL
    SELECT 'campaign_004' UNION ALL
    SELECT 'campaign_005' UNION ALL
    SELECT 'campaign_006'
)
SELECT 
    tc.campaignID,
    COUNT(ctaS.engagementID) AS numEngagements,
    COUNT(DISTINCT ctaS.targetID) AS numTargets,
    SUM(CASE WHEN ctaS.engagementType = 'click' THEN 1 ELSE 0 END) AS numClicks
FROM 
    target_campaigns tc
LEFT JOIN 
    your_table_name ctaS ON tc.campaignID = ctaS.campaignID
GROUP BY 
    tc.campaignID
ORDER BY 
    tc.campaignID;

内容的提问来源于stack exchange,提问作者Damian Cardona

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:00:25