在SQL中有没有相当于argmax的东西?

前端之家收集整理的这篇文章主要介绍了在SQL中有没有相当于argmax的东西?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在更一般的意义上:是否有一个函数可以让我找到列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

LIMIT / TOP:

sql Server支持TOP:

SELECT TOP 1 
         x.*
    FROM YOUR_TABLE x
ORDER BY x.column DESC

MysqL& Postgresql支持限制:

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():

如果它们共享相同的值,则可以返回多个行,并且可以将其配置为提供每个分组的最高(或最低)值.但是,DENSE_RANK() OVER (ORDER BY y.column DESC) AS rank FROM YOUR_TABLE y) x WHERE x.rank = 1

原文链接:https://www.f2er.com/mssql/81983.html

猜你在找的MsSQL相关文章