[英]SQL Combine multiple different rows into one row
這是我的查詢:
SELECT
basic_all_levels.date,
basic_all_levels.account_id,
basic_all_levels.ad_id,
basic_all_levels.inline_link_clicks AS link_clicks,
basic_all_levels.reach,
basic_all_levels.spend AS cost,
fb_basic_all_levels_cost_per_action_type.action_type,
fb_basic_all_levels_cost_per_action_type.value,
CASE WHEN (spend > 0) AND action_type = 'landing_page_view'
THEN spend / value
ELSE 0 END AS landing_page_views,
CASE WHEN (spend > 0) AND action_type = 'offsite_conversions_fb_pixel_purchase'
THEN spend / value
ELSE 0 END AS purchases,
FROM `x.facebook_ad_insights.fb_basic_all_levels` AS basic_all_levels
LEFT JOIN `x.facebook_ad_insights.fb_basic_all_levels_cost_per_action_type` AS fb_basic_all_levels_cost_per_action_type
ON basic_all_levels.ad_id = fb_basic_all_levels_cost_per_action_type.ad_id and basic_all_levels.date = fb_basic_all_levels_cost_per_action_type.date
這是我的結果
我只想要一行,如下所示:
我不需要“值”列,因為我可以重新計算它。
我查看了很多問題,但我不明白如何聚合,因為: - group by 不起作用。 它說:“登陸頁面視圖”既沒有分組也沒有匯總 - 我檢查了我的“左連接”並嘗試看看是否存在更合適的東西 - 我看到了 pivot function 但我想 Z99938282F04071842ZEF 視圖僅特定頁面和購買,而不是全部列在操作類型列中。
我會使用以下版本的 go(BigQuery 標准 SQL)
#standardSQL
SELECT
basic_all_levels.date,
basic_all_levels.account_id,
basic_all_levels.ad_id,
basic_all_levels.inline_link_clicks AS link_clicks,
basic_all_levels.reach,
basic_all_levels.spend AS cost,
IF(landing_page_views > 0, spend / landing_page_views, 0) AS landing_page_views,
IF(purchases > 0, spend / purchases, 0) AS purchases
FROM `x.facebook_ad_insights.fb_basic_all_levels` AS basic_all_levels
LEFT JOIN (
SELECT
ad_id,
`date`,
SUM(IF(action_type = 'landing_page_view', value, 0)) AS landing_page_views,
SUM(IF(action_type = 'offsite_conversions_fb_pixel_purchase', value)) AS purchases
FROM `x.facebook_ad_insights.fb_basic_all_levels_cost_per_action_type`
GROUP BY ad_id, `date`
) AS fb_basic_all_levels_cost_per_action_type
USING(ad_id, `date`)
與第一個 JOIN'ing 然后 GROUP'ing 的版本相比應該更優化
我認為您正在尋找聚合。 盡我所能:
SELECT bal.date, bal.account_id, bal.ad_id,
spend as cost,
SUM(CASE WHEN spend > 0 AND action_type = 'landing_page_view'
THEN spend / value ELES 0
END) AS landing_page_views,
SUM(CASE WHEN spend > 0 AND action_type = 'offsite_conversions_fb_pixel_purchase'
THEN spend / value ELSE 0
END) AS purchases
FROM `x.facebook_ad_insights.fb_basic_all_levels` bal LEFT JOIN
`x.facebook_ad_insights.fb_basic_all_levels_cost_per_action_type` balcat
ON bal.ad_id = balcat.ad_id AND
bal.date = balcat.date
GROUP BY bal.date, bal.account_id, bal.ad_id, spend;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.