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

如何合并关联active_deals与deal_display_controls的两个分组统计SQL查询?

合并两个SQL查询为单个查询的解决方案

当然可以把这两个独立查询合并成一个!我们可以利用条件聚合的方式,在同一个分组查询中同时计算两个统计指标,这样只需要一次关联表操作就能得到结果,效率更高。

合并后的SQL语句

SELECT
    active_deals.region_code,
    COUNT(CASE WHEN deal_display_controls.display_control_id = 0xc04e20724f5f49c9a285cb3c98d777b4 THEN 1 END) AS count_of_active_deals_with_given_display_control_for_region_code,
    COUNT(*) AS count_of_active_deals_for_region_code
FROM active_deals
JOIN deal_display_controls ON active_deals.bin_deal_id = deal_display_controls.deal_id
GROUP BY active_deals.region_code;

语句解释

  • 条件聚合实现指定条件计数:COUNT(CASE ...) 是核心逻辑——当display_control_id匹配你指定的值时,CASE返回1,否则返回NULL;而COUNT()函数会自动忽略NULL值,最终统计的就是符合指定条件的交易数量。
  • 全量有效交易计数:直接用COUNT(*)统计关联后的所有行数,就是每个region_code下的所有有效交易数量。
  • 分组逻辑:依然按active_deals.region_code分组,保证每个地区的两个统计值对应正确。

预期输出

当指定display_control_id为0xc04e20724f5f49c9a285cb3c98d777b4时,输出会和你预期的完全一致:

region_codecount_of_active_deals_with_given_display_control_for_region_codecount_of_active_deals_for_region_code
US12
CA11

为什么这样更好?

相比原来的两个独立查询,合并后的语句只需要一次表关联操作,避免了重复扫描和关联相同的数据,在数据量较大时能明显提升查询效率,同时也让逻辑更集中,便于维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 22:42:46