You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于多输入字段实现符合条件的高评分手机数据检索

嘿,这个需求其实挺实用的,不管你是把数据存在数据库里,还是用Python处理本地的数据集,都有清晰的实现方案。我给你拆解两种最常用的场景:

用SQL实现(适合数据库存储的数据集)

假设你的数据存在一张名为mobile_data的数据库表中,字段就是mobile_brand、price、rating。要实现你的需求,用窗口函数是最灵活的方式——既能精准筛选,还能处理多个记录共享最高评分的情况。

核心代码

SELECT mobile_brand, price, rating
FROM (
    SELECT 
        mobile_brand, 
        price, 
        rating,
        -- 按品牌分区(可选,若要批量查多品牌时有用),按评分降序排名
        RANK() OVER (PARTITION BY mobile_brand ORDER BY rating DESC) AS rank_num
    FROM mobile_data
    -- 替换成用户输入的品牌和价格范围
    WHERE mobile_brand = 'windows' AND price <= 500
) ranked_mobiles
WHERE rank_num = 1;

代码解释

  • 内层子查询先筛选出符合品牌(windows)和价格≤500的所有记录,同时用RANK()给每条记录按评分降序排名;
  • 如果有多个记录共享最高评分,RANK()会给它们都标记为排名1,这样你就能拿到所有最优记录;如果只需要返回任意一条,把RANK()换成ROW_NUMBER()即可;
  • 外层查询只取排名为1的记录,就是你要的结果。
用Python Pandas实现(适合本地/内存数据集)

如果你的数据是本地的CSV、Excel或者直接存在内存里,用Pandas处理会非常方便。

核心代码

import pandas as pd

# 先构造示例数据集(实际场景可以用pd.read_csv/pd.read_excel导入)
mobile_data = pd.DataFrame({
    'mobile_brand': ['windows', 'windows', 'android', 'ios', 'windows'],
    'price': [200, 100, 300, 200, 452],
    'rating': [100, 52, 9, 99, 50]
})

def get_top_rating_mobile(target_brand, min_price=0, max_price=None):
    # 1. 筛选符合条件的记录
    filtered = mobile_data[
        (mobile_data['mobile_brand'] == target_brand) &
        (mobile_data['price'] >= min_price) &
        (mobile_data['price'] <= max_price if max_price is not None else True)
    ]
    
    # 处理无匹配的情况
    if filtered.empty:
        return "没有找到符合条件的手机数据"
    
    # 2. 找到最高评分的记录
    top_rating = filtered['rating'].max()
    top_records = filtered[filtered['rating'] == top_rating]
    
    # 返回结果(可以转成字典格式方便前端使用)
    return top_records.to_dict('records')

# 调用示例:查询windows品牌,价格≤500的最高评分手机
print(get_top_rating_mobile('windows', max_price=500))

代码解释

  • 函数get_top_rating_mobile接收品牌、最低价格(默认0)、最高价格(默认无上限)三个参数,适配各种价格区间需求;
  • 先筛选出符合品牌和价格范围的数据,然后找到最高评分,返回所有达到该评分的记录;
  • 如果只需要返回一条,也可以用filtered.nlargest(1, 'rating')来快速获取。
边界情况处理建议
  • 无符合条件的记录:一定要加判断,返回友好提示,避免报错;
  • 多个最高评分记录:根据业务需求选择返回全部还是单条,比如电商场景可能需要返回所有同评分的产品;
  • 价格区间是双向范围:比如用户要100-300的价格,只需要调整函数里的min_price=100和max_price=300即可。

内容的提问来源于stack exchange,提问作者Neo Ravi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:31:56