3055. 最高欺诈百分位数 🔒
题目描述
表:Fraud
+-------------+---------+ | Column Name | Type | +-------------+---------+ | policy_id | int | | state | varchar | | fraud_score | int | +-------------+---------+ policy_id 是这张表中具有不同值的列。 这张表包含 policy id,state 和 fraud score。
Leetcode 保险公司开发了一个 ML 驱动的 预测模型 来检测欺诈索赔的 可能性。因此,他们分配了经验最丰富的理赔员来处理前 5%
被标记 的索赔。
编写一个解决方案来找出 每个州 索赔的前 5
百分位数。
返回结果表,以 state
升序 排序,fraud_score
降序 排序,policy_id
升序 排序。
结果格式如下所示。
示例 1:
输入: Fraud 表: +-----------+------------+-------------+ | policy_id | state | fraud_score | +-----------+------------+-------------+ | 1 | California | 0.92 | | 2 | California | 0.68 | | 3 | California | 0.17 | | 4 | New York | 0.94 | | 5 | New York | 0.81 | | 6 | New York | 0.77 | | 7 | Texas | 0.98 | | 8 | Texas | 0.97 | | 9 | Texas | 0.96 | | 10 | Florida | 0.97 | | 11 | Florida | 0.98 | | 12 | Florida | 0.78 | | 13 | Florida | 0.88 | | 14 | Florida | 0.66 | +-----------+------------+-------------+ 输出: +-----------+------------+-------------+ | policy_id | state | fraud_score | +-----------+------------+-------------+ | 1 | California | 0.92 | | 11 | Florida | 0.98 | | 4 | New York | 0.94 | | 7 | Texas | 0.98 | +-----------+------------+-------------+ 解释: - 对于 California 州,只有 ID 为 1 的保单的欺诈分数为 0.92,属于该州的前 5%。 - 对于 Florida 州,只有 ID 为 11 的保单的欺诈分数为 0.98,属于该州的前 5%。 - 对于 New York 州,只有 ID 为 4 的保单的欺诈分数为 0.94,属于该州的前 5%。 - 对于 Texas 州,只有 ID 为 7 的保单的欺诈分数为 0.98,属于该州的前 5%。 输出表以 state 升序排序,fraud_score 降序排序,policy_id 升序排序。
解法
方法一:使用窗口函数
我们可以使用 RANK()
窗口函数来计算每个州的欺诈分数的排名,然后筛选出排名为 1 的记录,并且按照题目要求排序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|