如何解决sql:选择由另一列分组的两个列值的计数并获得两个计数的比率
我有一个表格,其中包含按国家/地区标记的单个广告点击和广告展示。像这样:
我需要找到每个国家的点击率(ad_click
个数字除以ad_impression
个国家的数字)。
我可以计数:
SELECT
`events_20200918`.`geo`.`country` AS `geo_country`,`events_20200918`.`event_name` AS `event_name`,count(1) AS `count_of_rows`
FROM `smartsecurity2-fccc6`.`analytics_238757844`.`events_20200918` AS `events_20200918`
WHERE
`events_20200918`.`event_name` IN ('S_ad_impression','S_ad_click')
GROUP BY
1,2
ORDER BY
3 DESC
结果如下:
但是如何增加每个国家/地区的ad_click / ad_impression比率?
解决方法
如果您想在每个国家/地区中排成一排,以点击数与展示次数之比,则可以使用条件汇总:
select
`geo`.`country` as `geo_country`,safe_divide(
1.0 * countif(`event_name` = 's_ad_click'),countif(`event_name` = 's_ad_impression')
) as ratio
from `smartsecurity2-fccc6`.`analytics_238757844`.`events_20200918` as `events_20200918`
where `event_name` in ('S_ad_impression','S_ad_click')
group by 1
此选项按国家/地区分组,然后将点击次数除以展示次数。如果一个国家有点击但没有展示,safe_divide()
避免了被0除的错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。