Sql 将两个表分组,然后连接它们
我有两张桌子: 表1包含主键活动id、类型、关键字、报告日期 活动编号 类型 关键词 印象 日期 1. 链接 沐浴露 2. 2021-05-01 1. 搜索引擎 人体凝胶 5. 2021-05-01 1. 链接 芳香凝胶 1. 2021-05-01 这里有一个方法:Sql 将两个表分组,然后连接它们,sql,postgresql,Sql,Postgresql,我有两张桌子: 表1包含主键活动id、类型、关键字、报告日期 活动编号 类型 关键词 印象 日期 1. 链接 沐浴露 2. 2021-05-01 1. 搜索引擎 人体凝胶 5. 2021-05-01 1. 链接 芳香凝胶 1. 2021-05-01 这里有一个方法: SELECT t1.campaign_id, t1.report_date, sum(t1.clicks) AS clicks, t2.orders AS orders, FROM resul
SELECT
t1.campaign_id,
t1.report_date,
sum(t1.clicks) AS clicks,
t2.orders AS orders,
FROM
result.table1 t1
LEFT JOIN lateral(
select sum(t2.orders) orders
from result.table2 t2
where t1.campaign_id = t2.campaign_id
AND t1.report_date = t2.report_date
) t2 on true
GROUP BY
t1.campaign_id,
t1.report_date,
t2.orders
这里有一个方法:
SELECT
t1.campaign_id,
t1.report_date,
sum(t1.clicks) AS clicks,
t2.orders AS orders,
FROM
result.table1 t1
LEFT JOIN lateral(
select sum(t2.orders) orders
from result.table2 t2
where t1.campaign_id = t2.campaign_id
AND t1.report_date = t2.report_date
) t2 on true
GROUP BY
t1.campaign_id,
t1.report_date,
t2.orders
我建议在加入之前进行聚合:
注:你可能想考虑全连接来处理你在一个没有点击的约会中有订单的情况。 < P>我建议在加入之前聚合:
注:你可能想考虑全连接来处理那些在没有点击日期的活动中有订单的情况。选择…从选择。。。分组方式。。。t1左连接选择。。。分组方式。。。t1上的t2.x=t2.y选择。。。从选择。。。分组方式。。。t1左连接选择。。。分组方式。。。t1上的t2.x=t2.yThanks!是的,你说得对,我需要完全加入。现在,当我有订单但没有点击时,我看到只有订单的行-这些行的活动id和报告日期为空。如何修复?@hsadik。请注意,select不限定活动id和报告日期,查询使用。这应该适用于完全联接,尽管clicks和orders值可能为空。我发现了一些示例:表中clicks活动为1的行,report_date='2021-04-30'不存在。表中订单活动=1,报告日期=2021-04-30的行存在。所以,有了完整的加入活动id和报告日期将为空,谢谢!是的,你说得对,我需要完全加入。现在,当我有订单但没有点击时,我看到只有订单的行-这些行的活动id和报告日期为空。如何修复?@hsadik。请注意,select不限定活动id和报告日期,查询使用。这应该适用于完全联接,尽管clicks和orders值可能为空。我发现了一些示例:表中clicks活动为1的行,report_date='2021-04-30'不存在。表中订单活动=1,报告日期=2021-04-30的行存在。因此,对于完全加入活动,活动id和报告日期将为空