首页 > 解决方案 > 在 SQL 中,如何获取两个不同的字符串值来做一个聚合函数?

问题描述

编写一个查询,获取2019年每个应用的点击率。事件表的架构是app_id(整数),event_id(字符串:“impression”,“click”和timestamp(日期时间)。我的查询如下,但不确定如何按展示或点击过滤以计算点击率。

SELECT app_id, COUNT(event_id = ‘click’ ) / COUNT (event_id = ‘impression’) as click_through_rate
FROM events 
WHERE  EXTRACT(YEAR from timestamp) = 2019
GROUP BY app_id
ORDER BY click_through_rate DESC

标签: mysqlsql

解决方案


我想你想要sum()

SELECT app_id, 
       SUM(event_id = ‘click’ ) / SUM(event_id = ‘impression’) as click_through_rate
FROM events 
WHERE  EXTRACT(YEAR from timestamp) = 2019
GROUP BY app_id
ORDER BY click_through_rate DESC;

COUNT()计算表达式的非NULL值的数量。您想要表达式所在的总和true- 因此SUM()而不是COUNT().


推荐阅读