题目描述:
写一条SQL语句来查询每一条广告的 ctr ,
ctr 要保留两位小数。结果需要按 ctr 降序、按 ad_id 升序 进行排序。
查询结果示例如下:
对于 ad_id = 1, ctr = (2/(2+1)) * 100 = 66.67
对于 ad_id = 2, ctr = (1/(1+2)) * 100 = 33.33
对于 ad_id = 3, ctr = (1/(1+1)) * 100 = 50.00
对于 ad_id = 5, ctr = 0.00, 注意 ad_id = 5 没有被点击 (Clicked) 或查看 (Viewed) 过
注意我们不关心 action 为 Ingnored 的广告
结果按 ctr(降序),ad_id(升序)排序
方法1:
主要思路:解题链接汇总
(1)
# Write your MySQL query statement below
select ad_id , round(ifnull(sum(action='Clicked')/sum(action in('Clicked','Viewed'))*100,0),2) as 'ctr'
from Ads
group by ad_id
order by ctr desc,ad_id asc