涉及连接的查询-合并来自我们两个表的数据

问题描述 投票:0回答:1

我们需要合并两个表中的数据-active_dealsdeal_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

我可以通过将上述问题分为两个部分,并为每个部分编写单独的查询来做到这一点:第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;

O / p:

`region_code`    `count_of_active_deals_with_given_display_control_for_region_code  
  US                          1                                                                                                                
  CA                          1     

Part2:获取有效交易并按地区代码分组查询相同:

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;

O / p:

`region_code`    `count_of_active_deals_for_region_code`
  US                          2
  CA                          1

我需要将这两个查询合并为一个查询。可以这样做吗?

mysql sql join inner-join
1个回答
0
投票

我认为您希望有条件聚合的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
© www.soinside.com 2019 - 2024. All rights reserved.