0
我使用的是Postgresql 9.6,并且想知道这是否可能。Postgresql通过onequery循环创建另一个查询的结果
我有一个类似的查询:
with mkt_types as (
select distinct(mkt_medium)
from sessions
), sessions_all as (
select *
from sessions
)
select
count(visitor_id) as total_visits,
count(1) FILTER (where mkt_medium = 'seo') as seo_visitors,
count(1) FILTER (where mkt_medium = 'seo' and domain_sessionidx = 1) as seo_new_visitors,
count(1) FILTER (where mkt_medium = 'seo' and conversion_visit = 'true') as seo_converters,
count(1) FILTER (where mkt_medium = 'seo' and domain_sessionidx = 1 and conversion_visit = 'true') as seo_new_converters
from sessions_all;
是否有可能通过的结果,得到mkt_types和循环的价值观和更换查询的“搜索引擎优化”的一部分。
实例 如果我有mkt_types“搜索引擎优化”,“电子邮件”,“旗帜”,那么我的最后的查询最终会得到结果,如果我输入了出来:
with mkt_types as (
select distinct(mkt_medium)
from sessions
), sessions_all as (
select *
from sessions
)
select
count(visitor_id) as total_visits,
count(1) FILTER (where mkt_medium = 'seo') as seo_visitors,
count(1) FILTER (where mkt_medium = 'seo' and domain_sessionidx = 1) as seo_new_visitors,
count(1) FILTER (where mkt_medium = 'seo' and conversion_visit = 'true') as seo_converters,
count(1) FILTER (where mkt_medium = 'seo' and domain_sessionidx = 1 and conversion_visit = 'true') as seo_new_converters,
count(1) FILTER (where mkt_medium = 'email') as email_visitors,
count(1) FILTER (where mkt_medium = 'email' and domain_sessionidx = 1) as email_new_visitors,
count(1) FILTER (where mkt_medium = 'email' and conversion_visit = 'true') as email_converters,
count(1) FILTER (where mkt_medium = 'email' and domain_sessionidx = 1 and conversion_visit = 'true') as email_new_converters,
count(1) FILTER (where mkt_medium = 'banner') as banner_visitors,
count(1) FILTER (where mkt_medium = 'banner' and domain_sessionidx = 1) as banner_new_visitors,
count(1) FILTER (where mkt_medium = 'banner' and conversion_visit = 'true') as banner_converters,
count(1) FILTER (where mkt_medium = 'banner' and domain_sessionidx = 1 and conversion_visit = 'true') as banner_new_converters
from sessions_all;
谢谢
无关,但:'distinct'是**不**的功能。编写'distinct(mkt_medium)'是没有意义的(另外:'session_all'cte是一个坏主意 - 它会减慢你的查询 - 只是把'sessions'表放在最后的查询中) –