我们需要合并两个表中的数据- active_deals
以及 deal_display_controls
. 其中的(相关)列为:
`active_deals` : `deal_id`, `region_code`
`deal_display_controls` : `deal_id`, `display_control_id`
查询需要获取具有给定display\u control\u id的所有活动交易的所有计数,并按其区域代码(按区域代码分组)对它们进行分组。除此之外,它还需要按地区代码对活动的交易进行分组(没有display\u control\u id约束)
因此,如果活动交易表如下所示:
deal_id region_code
d1 US
d2 CA
d3 US
交易显示控件如下所示:
`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\u control\u 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
我需要知道如何将这两个查询组合成一个查询。有可能这样做吗?
2条答案
按热度按时间nwnhqdif1#
在计算时,您可以添加额外的条件
control_id
```select d.region_code
, count(distinct d.deal_id) count_of_active_deals_for_region_code
, SUM(c.display_control_id = 'dc1') count_of_active_deals_with_given_display_control_for_region_code
from active_deals d
left
join deal_display_controls c
on d.deal_id = c.deal_id
group
by d.region_code
r6hnlfcb2#
我想你想要一个
join
使用条件聚合: