这是为了查找前 10 名广告商应用程序(基于安装次数)的平均值。eCPM(计算如下查询)。如果我只使用一个发布者 ID 运行它,它就可以正常工作。
问题:当使用多个发布应用 ID 时,子查询 (C2) 将其读取为前 10 位广告商应用来自多个发布 ID,从而误导计算。如何以可以读取每个发布者应用程序的方式运行它(并获得每个发布者应用程序的前 10 名广告商的 ECPM)?
SELECT
d.app_name AS publisher_app_name,
a.publisher_app AS publisher_app_id,
( SELECT
CASE WHEN SUM(b.impressions) > 0
THEN ROUND((1000*SUM(b.money_spent))/SUM(b.impressions),3)
ELSE 0
END AS top_10_adv_ecpm
FROM warehouse.daily_uber_aggr b
WHERE publisher_app IN ('983234fb17ba470008','2b3ed6ff4d0e48463')
AND b.dt BETWEEN '2018-12-26' AND '2019-01-25'
AND b.advertiser_app IN ( SELECT advertiser_app
FROM warehouse.daily_uber_aggr
WHERE publisher_app IN ('983234fb17ba470008','2b3ed6ff4d0e48463')
AND dt BETWEEN '2018-12-26' AND '2019-01-25'
GROUP BY advertiser_app
ORDER BY SUM (converted_installs) DESC
LIMIT 10
) AS top_10_adv_ecpm,
SUM(a.converted_installs) AS installs_publisher
FROM warehouse.daily_uber_aggr a
LEFT JOIN dimensions.apps d ON d.app_id = a.publisher_app
WHERE a.publisher_app IN ('983234fb17ba470008','2b3ed6ff4d0e48463')
AND a.dt BETWEEN '2018-12-26' AND '2019-01-25'
GROUP BY
d.app_name,
a.publisher_app