订阅更新

查询质量和劣质查询占比

SQL 实战 123 题 · 第 80 题 简单 约 2 分钟读完

LeetCode 1211 · 比值的平均、条件占比

本文目录
  1. 面试怎么回答
  2. 题意
  3. 表结构
  4. 思路
  5. 参考解法
  6. 易错点

面试怎么回答

按 query_name 分组,质量是 ROUND(AVG(rating / position), 2),劣质占比是 ROUND(AVG(rating < 3) * 100, 2)。「比值的平均」和「平均的比值」是两个口径,写之前要看清定义。

先把这段讲顺;面试官追问时,再展开下面的原理和细节。

详细讲解

题意

查询表记录每次查询的名称、结果、位置和评分。对每个查询名称计算两个指标:质量 = 每条记录「评分 / 位置」的平均值;劣质占比 = 评分小于 3 的记录所占百分比。都保留两位小数。

表结构

  • Queries:query_name、result、position(1 到 500)、rating(1 到 5);没有主键

思路

按查询名称分组,质量是 AVG(rating / position),注意是先对每行求比值再平均,而不是平均评分除以平均位置;劣质占比是条件计数除以总数再乘 100。

参考解法

select query_name,
    round(avg(rating/position),2) quality,
    round(sum(if(rating<3,1,0))/count(*)*100,2) poor_query_percentage
from Queries
group by query_name

易错点

  • 把 AVG(rating) / AVG(position) 当成质量,口径完全不同。
刷题进度保存在当前浏览器