gpt4 book ai didi

sql - 根据另一列的最小值选择一列

转载 作者:行者123 更新时间:2023-11-29 11:43:19 25 4
gpt4 key购买 nike

我有下表。

test_type |  brand  | model  | band | firmware_version | avg_throughput
-----------+---------+--------+------+-----------------+----------------
1client | Linksys | N600 | 5ghz | 1 | 66.94
1client | Linksys | N600 | 5ghz | 2 | 94.98
1client | Linksys | N600 | 5ghz | 4 | 132.40
1client | Linksys | EA6500 | 5ghz | 1 | 216.46
1client | Linksys | EA6500 | 5ghz | 2 | 176.79
1client | Linksys | EA6500 | 5ghz | 4 | 191.44

我想选择具有最低 firmware_version 的每个 modelavg_throughput

当我执行 SELECT test_type, model, min(firmware_version) FORM temp_table GROUP BY test_type, model 时,我得到了我想要的,但是一旦我添加了 avg_throughput 列,它就需要我还将它添加到 GROUP BY 子句中,当我只需要每个 model< 的最低 firmware_versionavg_throughput 时,它会返回所有行 类型。

最佳答案

在标准 SQL 中,这可以使用窗口函数来完成

select test_type, model, firmware_version, avg_throughput
from (
select test_type, model, firmware_version, avg_throughput,
min(firmware_version) over (partition by test_type, model) as min_firmware
from temp_table
) t
where firmware_version = min_firmware;

但是 Postgres 有 distinct on 运算符,它通常比具有窗口函数的相应解决方案更快:

select distinct on (test_type, model) 
test_type, model, firmware_version, avg_throughput
from temp_table
order by test_type, model, firmware_version;

SQLFiddle 示例:http://sqlfiddle.com/#!15/563bd/1

关于sql - 根据另一列的最小值选择一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25270298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com