0

我有一个如下所示的表:

概率 姓名 频率 数数 哈希 时间
0.0755 阿尔德 0.988 0.633 0 5YIF6HSOtHN9HdcE5IPzMe 2021-04-09T10:56:00.986441Z
0.0755 阿尔德 0.988 0.633 0 5YIF6HSOtHN9HdcE5IPzMe 2021-04-09T10:56:00.986441Z
0.0006259999999999999 srd2 0.987 0.649 0 5GFwJHucflHj46Hwet6qvc 2021-04-09T10:56:14.799226Z
0.0006259999999999999 ard2 0.987 0.649 0 5GFwJHucflHj46Hwet6qvc 2021-04-09T10:56:14.799226Z
0.0006259999999999999 ard2 0.987 0.649 0 5GFwJHucflHj46Hwet6qvc 2021-04-09T10:56:14.799226Z
0.145 ard12 0.986 0.597 1 1MgM0WDaoQ2A3bnIQTR6ty 2021-04-09T10:56:15.309345Z
0.145 ard12 0.986 0.597 1 1MgM0WDaoQ2A3bnIQTR6ty 2021-04-09T10:56:15.309345Z

我想根据其他一些值按名称命名前 5 个传感器,比方说

  • 排名前 5 位的设备prob

当然,如果我这样做

select * from my_sensors order by prob DESC

然后我有一些传感器名称重复,因此 LIMIT 不起作用。

4

1 回答 1

1

在这种情况下你可以做的是使用WITH它允许子查询:

WITH top_devices AS (select DISTINCT name, prob from my_sensors order by prob DESC)
select * from top_devices limit 5;

这将返回包含传感器名称和列的两列prob

姓名 概率
ard12 0.145
阿尔德 0.0755
ard2 0.0006259999999999999
... ...

您的示例中只有三个独特的传感器,但我认为完整的数据集会给您前 5 个。

为了摆脱欺骗,这里的示例查询正在使用DISTINCT

参考:

于 2021-04-09T15:18:53.470 回答