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

在QuestDB中如何从IoT传感器表获取按prob值排序的前5个唯一传感器设备?

获取前5个唯一传感器设备(按prob降序)

嘿,这个问题我太熟悉了——直接排序加LIMIT会因为重复的name导致结果不符合预期,核心是得先确保每个传感器名称只出现一次,再按prob排序筛选。这里给你几个实用的解决方案,根据你的需求选就行:

方案1:仅获取唯一名称及对应prob(适合只需要这两个字段的场景)

如果你只需要name和对应的prob值,用GROUP BY分组是最稳妥的,它会自动为每个name保留最大的prob(如果同一个传感器有不同prob值的话),然后再排序取前5:

SELECT name, MAX(prob) AS max_prob
FROM my_sensors
GROUP BY name
ORDER BY max_prob DESC
LIMIT 5;

如果你的数据里每个name对应的prob都是一致的(就像你示例里那样),用DISTINCT也能快速实现:

SELECT DISTINCT name, prob
FROM my_sensors
ORDER BY prob DESC
LIMIT 5;

方案2:获取唯一传感器的完整记录(需要其他字段如freq、lim等)

要是你还需要每个唯一传感器对应的完整行数据(比如freq、lim这些字段),用窗口函数ROW_NUMBER()是最佳选择。它会给每个name分组里的行按prob降序编号,然后我们只取每组的第一行,再排序筛选前5:

SELECT *
FROM (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY name ORDER BY prob DESC) AS row_num
    FROM my_sensors
) ranked_sensors
WHERE row_num = 1
ORDER BY prob DESC
LIMIT 5;

这个方法的好处是,既能保证每个name只出现一次,又能拿到该传感器对应prob最高的那一条完整记录。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 13:14:11