gpt4 book ai didi

sql - 在 SQL 中是否有与 argmax 等效的东西?

转载 作者:行者123 更新时间:2023-12-03 11:50:39 27 4
gpt4 key购买 nike

从更一般的意义上讲:是否有一个函数可以让我找到列 X 中的值是该列最大值的整行?

最佳答案

不是一个特定的功能,没有。

根据需要和数据库支持的功能,有多种编写查询的方法。

子查询:

如果有任何共享相同的值,这种方法可能会返回多于一行:

SELECT x.*
FROM YOUR_TABLE x
WHERE x.column = (SELECT MAX(y.column)
FROM YOUR_TABLE y)

自我加入:

如果有任何共享相同的值,这种方法可能会返回多于一行:
SELECT x.*
FROM YOUR_TABLE x
JOIN (SELECT MAX(t.column) AS max_col
FROM YOUR_TABLE t) y ON y.max_col = x.column

限制/最高:

SQL Server 支持 TOP :
  SELECT TOP 1 
x.*
FROM YOUR_TABLE x
ORDER BY x.column DESC

MySQL 和 PostgreSQL 支持 LIMIT :
  SELECT x.*
FROM YOUR_TABLE x
ORDER BY x.column DESC
LIMIT 1

分析 - ROW_NUMBER():

这将返回一行,并且可以配置为提供每个分组的最高(或最低)值。但是,此功能适用于 Oracle 9i+、SQL Server 2005+ 和 PostgreSQL 8.4+。
SELECT x.*
FROM (SELECT y.*,
ROW_NUMBER() OVER (ORDER BY y.column DESC) AS rank
FROM YOUR_TABLE y) x
WHERE x.rank = 1

分析 - DENSE_RANK():

如果它们共享相同的值,这可以返回多行,并且可以配置为提供每个分组的最高(或最低)值。但是,此功能适用于 Oracle 9i+、SQL Server 2005+ 和 PostgreSQL 8.4+。
SELECT x.*
FROM (SELECT y.*,
DENSE_RANK() OVER (ORDER BY y.column DESC) AS rank
FROM YOUR_TABLE y) x
WHERE x.rank = 1

关于sql - 在 SQL 中是否有与 argmax 等效的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4556653/

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