在SQL中有没有相当于argmax的东西?
发布时间:2020-12-12 16:36:47 所属栏目:MsSql教程 来源:网络整理
导读:在更一般的意义上:是否有一个函数可以让我找到列X中的值是列的最大值的整行? 解决方法 不是具体的功能,没有. 根据需要和数据库支持哪些功能,可以编写查询的方法很多. 子查询: 如果任何共享值相同,这种方法有可能返回一行以上: SELECT x.* FROM YOUR_TABLE
在更一般的意义上:是否有一个函数可以让我找到列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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |