思路:
首先按照query_name进行分组操作
对组内的rating/position的值求平均值得到quality
对组内的rating的值使用IF函数进行判断,如果rating<3则将其标识为1,如果rating>=3,则将其标识为0,通过次方法可以找出组内rating的值小于<3的个数,再除以组内rating的个数来求劣质查询的百分比poor_query_percentage
代码:
select
query_name,
Round(AVG(rating/position),2) quality,
Round(SUM(IF(rating < 3, 1, 0)) * 100 / COUNT(*), 2) poor_query_percentage
from Queries
GROUP BY query_name
having query_name is not null;