SQL-每日一题【1211. 查询结果的质量和占比】

题目

查询表 Queries: 

将查询结果的质量 quality 定义为:

各查询结果的评分与其位置之间比率的平均值。

将劣质查询百分比 poor_query_percentage 为:

评分小于 3 的查询结果占全部查询结果的百分比。

编写一组 SQL 来查找每次查询的名称(query_name)、质量(quality) 和 劣质查询百分比(poor_query_percentage)。

质量(quality) 和劣质查询百分比(poor_query_percentage) 都应四舍五入到小数点后两位。

查询结果格式如下所示:

 

 

 

解题思路

1.题目要求我们查询结果的质量 quality 和劣质查询百分比 poor_query_percentage,题目的描述有点难理解,我们可以看示例就很容易明白了,quality 就是同一个 query_name 的所有 rating/position 的平均值,poor_query_percentage 就是同一个 query_name 下 rating < 3 占全部记录的比率。

2.首先我们按照 query_name 对记录进行分组,然后用avg()函数计算出 rating/position 的平均值,再用 round()函数保留两位小数就可以得出 quality,在求poor_query_percentage 我们首先使用"rating < 3"来筛选出小于3的评分,rating<3 用于判断,小于3就是返回1,否则返回0。avg求平均就跟把1和0求和再除以行数是一样的结果。然后,将这个平均值乘以100,即将百分比表示。最后,使用"ROUND()"函数来将结果四舍五入到两位小数。

代码实现

SELECT
       query_name,
       ROUND(avg(rating/position),2) quality,
       ROUND(avg(rating < 3) * 100,2) poor_query_percentage
FROM Queries
GROUP BY query_name        

测试结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值