微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL 将单独的查询作为原始查询中的列加入

如何解决SQL 将单独的查询作为原始查询中的列加入

我正在努力加入以下两个查询

我的主要查询是下面的第一个查询,我想要实现的是查询 2 的选择率列的输出作为原始查询中的新列。

my original query which needs the additional column from query two

SELECT CAST("public"."event_event"."date_created" AS date) AS "date_created","marketing_message__via__messag"."name" AS "name",count(*) AS "count"

FROM "public"."event_event"

LEFT JOIN "public"."marketing_message" "marketing_message__via__messag" ON "public"."event_event"."message_id" = "marketing_message__via__messag"."id" LEFT JOIN "public"."marketing_campaign" "marketing_campaign__via__campa" ON "public"."event_event"."campaign_id" = "marketing_campaign__via__campa"."id"

WHERE (date_trunc('month',CAST("public"."event_event"."date_created" AS timestamp)) = date_trunc('month',CAST(Now() AS timestamp))
   AND "marketing_message__via__messag"."name" IS NOT NULL AND ("marketing_message__via__messag"."name" <> ''
    OR "marketing_message__via__messag"."name" IS NULL) AND "public"."event_event"."stage" = 'Lead' AND ("marketing_campaign__via__campa"."name" = 'a' 
OR "marketing_campaign__via__campa"."name" = 'b'
OR "marketing_campaign__via__campa"."name" = 'c' 
OR "marketing_campaign__via__campa"."name" = 'c1' OR "marketing_campaign__via__campa"."name" = 'd' 
OR "marketing_campaign__via__campa"."name" = 'e'))

GROUP BY CAST("public"."event_event"."date_created" AS date),"marketing_message__via__messag"."name"

ORDER BY CAST("public"."event_event"."date_created" AS date) ASC,"marketing_message__via__messag"."name" ASC

我想将以下“选择加入率”的查询输出添加到我上面的查询中作为一个新列。

查询 2

SELECT marketing_message.message_text,cast(sum((event_event.status='Opt-in')::int) as decimal) / nullif(sum((event_event.status='Sent')::int),0)* 100 as "Opt-in Rate (Sent)"
    
FROM event_event
JOIN marketing_campaign ON event_event.campaign_id = marketing_campaign.id
JOIN marketing_message ON event_event.message_id = marketing_message.id
WHERE True [[AND {{campaign_name}}]] [[AND {{date_created}}]]
GROUP BY marketing_message.message_text

解决方法

简短的回答是你不能。

您的第一个查询以日期和名称(GROUP BY 子句)为键,您的第二个查询以 message_text 为键。由于两个数据集之间没有关系,因此无法在单个查询中加入/组合它们。

您需要在两个数据集之间找到一个公共字段(或多个字段)并加入它们 - 但这不会给出与您目前相同的结果,因为您的查询需要完全重组。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。