mysql - 涉及连接的查询 - 合并来自我们的 2 个表的数据
问题描述
我们需要合并来自 2 个表的数据 -active_deals
和deal_display_controls
. 它们中的(相关)列是:
`active_deals` : `deal_id`, `region_code`
`deal_display_controls` : `deal_id`, `display_control_id`
查询需要获取具有给定 display_control_id 的所有活动交易的所有计数,并按其 region_code 分组(按区域代码分组)。除此之外,它还需要按区域代码对活动交易进行分组(没有 display_control_id 约束)
因此,如果活动交易表如下所示:
deal_id region_code
d1 US
d2 CA
d3 US
deal_display_controls 看起来像:
`deal_id` `display_control_id`
d1 dc1
d2 dc1
d3 dc2
d4 dc1
然后对于给定的显示控件 id = “dc1” 查询应输出:
`region_code` `count_of_active_deals_with_given_display_control_for_region_code `count_of_active_deals_for_region_code`
US 1 2
CA 1 1
我可以通过将上述问题分成 2 个部分并为每个部分编写单独的查询来做到这一点: 第 1 部分:获取给定 display_control_id 的有效交易并按区域代码分组查询相同:
select count(*), region_code from active_deals join deal_display_controls on active_deals.bin_deal_id=deal_display_controls.deal_id where deal_display_controls.display_control_id=0xc04e20724f5f49c9a285cb3c98d777b4 group by active_deals.region_code;
开/关:
`region_code` `count_of_active_deals_with_given_display_control_for_region_code
US 1
CA 1
第 2 部分:获取活动交易并按区域代码分组查询相同:
select count(*), 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;
开/关:
`region_code` `count_of_active_deals_for_region_code`
US 2
CA 1
我需要将这两个查询组合成一个查询。是否有可能做到这一点?
解决方案
我认为你想要一个join
有条件的聚合:
select d.region_code,
sum(ad.display_control_id = 1),
count(*)
from active_deals ad join
deals d
on ad.deal_id = d.deal_id
group by d.region_code
推荐阅读
- mysql - 一系列单元格中一组术语的出现次数
- java - Azure 事件中心 Java 客户端未处理数据
- ios - 如何在导航控制器上方添加视图?
- clojure - lein test with-profile 无法覆盖测试配置文件的 env 值
- jquery - jQuery帮助按钮导致调用页面动作
- azure-cognitive-search - 基于搜索列的 Azure 搜索排名
- jquery - 动态 DOM:如何在添加/删除动态元素以及在 DOM 中向上/向下移动元素时增加/减少 ID/名称?
- reactjs - 变量作为插值字符串
- javafx - 将 JavaFX 标签绑定到 StringProperty
- scapy - 如何使用 scapy 实现 stp、rstp、mstp 协议?