簡體   English   中英

SQL 將多個不同的行合並為一行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM