题81:
根据下表写一条SQL语句来查询每一条广告的 ctr , ctr 要保留两位小数。结果需要按 ctr 降序、按 ad_id 升序 进行排序。
其中:ad_id, user_id 是主键,该表的每一行包含一条广告的 ID(ad_id),用户的 ID(user_id) 和用户对广告采取的行为 (action)
action 列是一个枚举类型 (‘Clicked’, ‘Viewed’, ‘Ignored’) 。
解题思路:
(1)根据ad_id 分组
(2)用sum()做计算
(3)用ifnull()来判断null值
select ad_id ,
round(ifnull(sum(action = 'Clicked') /(sum(action = 'Clicked') + sum(action = 'Viewed')) * 100, 0), 2) AS ctr
from Ads
group by ad_id
order by ctr desc,ad_id;