返回每组一列最大值的行[重复]

2023-11-26

如果不搜索同一个表至少两次以获取最大行,然后获取该行的值,我很难做到这一点。所讨论的表相当大,因此这是不可接受的。

我的桌子可能是这样的:

SCORES
ID    ROUND    SCORE
1     1        3
1     2        6
1     3        2
2     1        10
2     2        12
3     1        6

我需要返回每个ID在最近一轮中获得的分数。也就是说,具有最大(回合)的行,但不是最大得分的行。

OUTPUT:
ID   ROUND   SCORE
1    3       2
2    2       12
3    1       6

现在我有:

SELECT * FROM 
(SELECT id, round,
CASE WHEN (MAX(round) OVER (PARTITION BY id)) = round THEN score ELSE NULL END score
 FROM
 SCORES
 where id in (1,2,3)
) scorevals
WHERE
scorevals.round is not null;

这可行,但效率相当低(我必须手动过滤掉所有这些行,而我应该一开始就无法获取这些行。)

我该怎么做才能获得正确的价值观?


没有子查询也是可能的:

SELECT DISTINCT
       id
      ,max(round) OVER (PARTITION BY id) AS round
      ,first_value(score) OVER (PARTITION BY id ORDER BY round DESC) AS score
FROM   SCORES
WHERE  id IN (1,2,3)
ORDER  BY id;

准确返回您所要求的内容。
关键的一点是DISTINCT被申请;被应用after窗口函数。

SQL 小提琴。

也许更快,因为它使用同一个窗口两次:

SELECT DISTINCT
       id
      ,first_value(round) OVER (PARTITION BY id ORDER BY round DESC) AS round
      ,first_value(score) OVER (PARTITION BY id ORDER BY round DESC) AS score
FROM   SCORES
WHERE  id IN (1,2,3)
ORDER  BY id;

否则做同样的事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

返回每组一列最大值的行[重复] 的相关文章

  • 删除原始数据中部分重复的记录

    我需要删除表中时间间隔为 1 或 2 分钟或相同且必须相同的所有记录ID但保留第一个记录 ID Time SN SD WE FW 10 2014 06 30 19 17 37 000 I 0 100 0 10 2014 06 30 19 1
  • 如何找到 Oracle 数据库的 URL?

    如何找到 Oracle 数据库的 URL 和端口 Example jdbc oracle thin host port dbName 用户名 密码 是否有我可以查看的 SQL 命令或日志 配置文件 对于甲骨文来说 有一个tnsnames o
  • 如何从 java.sql.Blob 类型的 zip 文件中读取和提取 zip 条目,而无需将 FileInputStream 或文件路径作为字符串 java

    public static void unzipFiles java sql Blob zip throws Exception String paths byte blobAsBytes zip getBytes 1 int zip le
  • 从多个表中选择 - 一对多关系

    我有这样的表 表产品 身份证 姓名 表格图像 产品 ID 网址 订单号 表价 产品 ID 组合 货币 价格 表数量 产品 ID 组合 数量 表 Product 与其他表是一对多关系 我需要查询表并得到类似这样的结果 伪数组 ProductI
  • Oracle:如何查找模式中上次更新(任何表)的时间戳?

    有一个Oracle数据库模式 数据很小 但仍然有10 15个表左右 它包含一种配置 路由表 有一个应用程序必须不时轮询此架构 不得使用通知 如果架构中没有数据更新 应用程序应使用其当前的内存版本 如果任何表有任何更新 应用程序应将所有表重新
  • 返回行位置 - Postgres

    我返回一个带有位置的表 select from select row number over as position from organization result where data1 Hello 返回这个 这是正确的 data1 H
  • 如何在新的数据库服务器上导入 Oracle 11g RMAN 备份集?

    我有一个使用 RMAN 创建的 Oracle 11g 数据库的备份集 现在我想将备份集导入 恢复到新的空数据库服务器上 我知道创建备份集的命令是 run backup as compressed backupset database tag
  • UUID最大字符长度

    我们使用 UUID 作为 Oracle DB 的主键 并尝试确定 VARCHAR 的适当最大字符长度 显然这是 36 个字符 但我们注意到生成的 UUID 比这个长 长度最多为 60 个字符 有谁知道 UUID 的合适最大字符长度 RFC4
  • SQL Server PIVOT 函数

    我有一个检索所有代理及其模块的查询 结果集将每个模块返回 1 行 SELECT am agentID AS agentid pa agentDisplayName agentdisplayname m ModuleName ModuleNa
  • 如何打印Oracle中过程的定义?

    oracle中有没有办法查看过程的结构是什么 我正在尝试记录并运行程序 并希望将实际的程序结构存储在我的日志中 您可以查询ALL SOURCE table SELECT text FROM all source WHERE owner lt
  • 如何将自定义类型数组传递给 Postgres 函数

    我有一个自定义类型 CREATE TYPE mytype as id uuid amount numeric 13 4 我想将它传递给具有以下签名的函数 CREATE FUNCTION myschema myfunction id uuid
  • 从 PDO 准备好的语句中获取原始 SQL 查询字符串

    在准备好的语句上调用 PDOStatement execute 时 有没有办法让原始 SQL 字符串执行 出于调试目的 这将非常有用 我假设您的意思是您想要最终的 SQL 查询 并将参数值插入其中 我知道这对于调试很有用 但这不是准备好的语
  • 将多行合并为一行并根据行数附加列

    我正在尝试将同一个表的多行合并为一个 我有一个像这样的示例表 Col1 Col2 Col3 Col4 Col5 Col6 1 BH1 CB 12 CC CC Conveyor Mal 1 BH1 CB 104 ZC ZC Full Emp
  • Yii 查询时对相关模型的限制

    我遇到了极限问题 我正在使用的代码如下 model PostCategory model record model gt with array posts gt array order gt posts createTime DESC li
  • Oracle:如果表存在

    我正在为 Oracle 数据库编写一些迁移脚本 并希望 Oracle 有类似于 MySQL 的东西IF EXISTS构造 具体来说 每当我想删除 MySQL 中的表时 我都会执行类似的操作 DROP TABLE IF EXISTS tabl
  • APEX:从临时表下载 BLOB

    我正在尝试使用 Oracle APEX 4 1 1 构建一个简单的查看应用程序 要显示的信息位于与包含 APEX 应用程序访问的架构的数据库不同的数据库上的表中 使用视图 View 访问此远程表 远程表视图 和数据库链接 视图按预期工作 包
  • 外键引用多个表

    我有4张桌子 A ida name B ida B specific stuff C ida C specific stuff D ida D specific stuff 我希望另一个表 E 可以仅引用 B 或 C 而不是 D 我可以在其
  • 累计非重复计数

    我正在查询每天获取 uid 的累计不同计数 示例 假设有 2 个 uid 100 200 出现在日期 2016 11 01 并且它们也在第二天出现 新的 uid 300 100 200 300 出现在 2016 11 02 此时我希望商店累
  • SQL:查找每个跑步者跑步之间的平均天数

    因此 如果我们给出下表 runner ran Carol 2011 02 01 Alice 2011 02 01 Bob 2011 02 01 Carol 2011 02 02 Bob 2011 02 02 Bob 2011 02 03 B
  • 从一个sql服务器选择到另一个sql服务器?

    我想将一台服务器 Data Old S1 中的一个表 T1 在 DB1 中 中的数据选择到另一台服务器 Data Latest S2 中的另一个表 T2 在 DB2 中 中的数据 我怎样才能做到这一点 请注意服务器的命名方式 查询也应该考虑

随机推荐

  • javax.mail.MessagingException:无法连接到 SMTP 主机?

    以下是我发送邮件的代码 import java util Properties import javax mail Authenticator import javax mail Message import javax mail Mess
  • 在数据框中按组折叠文本[重复]

    这个问题在这里已经有答案了 如何在列中按组聚合数据框group并折叠列中的文本text 样本数据 df lt read table header T text group text a a1 a a2 a a3 b b1 b b2 c c1
  • 如何覆盖 WordPress 核心功能?

    这是我第一次接触WordPress 我的任务是把已经定制好的核心功能提取出来 放到一个非核心文件中 以便我们升级时更方便维护 这是其中一种方法的示例wp admin includes template php 原始代码 function m
  • Jsoup 获取部分页面

    我正在尝试抓取投标网站的内容 但无法获取该网站的完整页面 我在 xulrunner 上使用 crowbar 首先获取页面 因为 ajax 以惰性方式加载某些元素 然后从文件中抓取 但在 bidrivals 网站的主页上 即使本地文件格式良好
  • C 字符串库

    是否有一个用于 C 而不是 C 的 C 字符串库 它实现了抽象char and wchar t 字符串 要求是 获得 BSD MIT CDDL 许可证 实现某种引用计数机制 支持正则表达式 有 Unicode 支持 Thanks 关于什么t
  • PHP:从对象中获取数据

    我怎样才能得到user nicename来自这个对象 BP User Object data gt stdClass Object ID gt 1 user login gt NICENICE user pass gt P BwLHvV7z
  • GWT、Google App Engine、TimerTask 或 ServiceImpl 中的线程抛出异常

    我正在使用 GWT 和 Google App Engine 我有一系列记录 我想每 30 分钟更新一次 在里面服务实现我有以下代码 new Timer schedule new TimerTask Override public void
  • 对于密钥 authView,此类不符合键值编码[重复]

    这个问题在这里已经有答案了 当我在模拟器上运行我的应用程序时 它运行良好 当我尝试使用设备时 它不起作用 并且出现以下错误 NOTE 我在代码中没有找到任何类型的 authView 类 2011 02 24 12 04 14 472 Tes
  • boost::asio 从socket读取n个字节到streambuf

    我有一个序列化结构 它是通过套接字发送的 我需要分块读取它 因为它的一个字段包含剩余数据的大小 我需要读取前几个字节 找出长度并读取其余部分 这就是我所得到的 boost asio streambuf buffer boost system
  • 文本区域中的新行字符会增加 C# 中的文本长度

    我的 ASP NET MVC 应用程序中遇到此问题 在我的一个模型中 有一个字段 描述 该字段的数据库列设置为NVarchar 300 在我看来 我正在创建一个文本区域 如下所示 Html TextAreaFor m gt m Descri
  • 不活动后自动关闭工作簿

    我创建了一个宏 可以在一段时间不活动后关闭WB 如果我手动打开文件 它会完美工作 但如果我使用不同 WB 中的另一个宏来打开文件 它不会在设置的不活动时间后自动关闭 我用来自动关闭它的代码是 本工作簿模块 Private Sub Workb
  • 如何在两个单独的步骤中运行 MSVC 预处理器和编译器?

    我想运行 Microsoft Visual Studio 编译器cl exe不调用预处理器 这可能吗 我认为简单地编译预处理的源代码 使用 c标志 将使预处理器以无操作的方式运行 但显然情况并非如此 我做了一些基准测试 这是一个小源文件 m
  • 使用 Rails 3 中的 Devise 显示上次登录的详细信息

    我有一个 Rails 3 应用程序 它使用 Devise 进行身份验证 我想在用户管理表中显示每个用户上次登录的日期和时间 我的应用程序基于以下应用程序 https github com dannymcc rails3 base 我已阅读
  • WPF keyDown 响应时间准确度

    我正在开发一个应用程序 用户可以在其中看到某些内容 并且必须通过单击键盘上的按键来做出反应 反应时间至关重要 越准确越好 我只编写了几行代码来测试默认设置的示例应用程序 inf WPF namespace Test
  • 保存变量值并在页面刷新后检索它[重复]

    这个问题在这里已经有答案了 我将一个字符串值保存到一个变量中 我的网页在某个过程后自动重新加载 我需要知道即使在页面刷新后我是否可以获得该变量中存储的值 我使用 javascript 代码刷新我的网页window location relo
  • 在 WPF 文本块中获取段落的最佳方法是什么? (换行符?)

    我有一些带有 r n 换行符的文本 我想在 WPF 文本块中添加换行符 我尝试将 r n 替换为 不带空格 当我在 XAML 中设置 Text 属性时它起作用 但在从 C 代码隐藏中设置时似乎不起作用 那么 将 WPF 文本块中的 r n
  • mongo组查询如何保留字段

    大家 在 mongo 组查询中 结果仅显示参数中的键 如何像mysql查询组一样保留每个组中的第一个文档 例如 name age sex province city area address ddl1st 22 纯爷们 BeiJing Be
  • 使用 CSS 仅针对 Firefox

    使用条件注释 可以轻松地使用特定于浏览器的 CSS 规则来定位 Internet Explorer 有时 Gecko 引擎 Firefox 会出现问题 使用 CSS 规则仅针对 Firefox 而不是其他浏览器的最佳方法是什么 也就是说 不
  • 如何使用用户 ID 参数下载 MSI 安装程序

    我有一个 NET C 应用程序 包含在 MSI 安装程序中 myprogram exe 我有一个 PHP 网站和一个特定页面 用户可以通过链接下载该程序 我希望能够跟踪 NET 应用程序上的某些事件 例如 程序已打开 将事件发送到我的服务器
  • 返回每组一列最大值的行[重复]

    这个问题在这里已经有答案了 如果不搜索同一个表至少两次以获取最大行 然后获取该行的值 我很难做到这一点 所讨论的表相当大 因此这是不可接受的 我的桌子可能是这样的 SCORES ID ROUND SCORE 1 1 3 1 2 6 1 3