当前位置: 首页 > 面试题库 >

查询中的多个最大值

谷梁翰飞
2023-03-14
问题内容

我知道标题听起来描述性不强,但这是我能想到的最好的:

我有这张桌子

ID BDATE VALUE
28911 2009年4月4日44820
28911 2009年4月17日32240
28911 20/4/2009 30550
28911 22/4/2009 4422587,5
28911 23/4/2009 4441659
28911 2009年4月24日7749594,67
38537 2009年4月17日58280
38537 2009年4月20日137240
38537 2009年4月22日81098692
38605 2009年4月14日2722368
38605 2009年4月20日5600
38605 22/4/2009 1625400
38605 23/4/2009 6936575

实际上,这是封装在视图中的非常复杂的查询,但现在已不再重要。

我想为每个ID包含最高BDate的行。在此示例中,这将是结果。

ID BDATE VALUE
28911 2009年4月24日7749594,67
38537 2009年4月22日81098692
38605 23/4/2009 6936575

我已经尝试过

select id, max(bdate), value from myview group by id, value

但随后它返回所有行,因为对于每个值,列均不同。该查询是在Oracle v10中设计的,我有资格仅使用选择查询而不创建过程。


问题答案:

我们可以在IN子句中使用乘法列:

select id, bdate, value 
from myview 
where (id, bdate) in
    (select id, max(bdate)
     from myview group by id)
/


 类似资料:
  • 问题内容: 我有一张像这样的桌子: 我的问题是;我想找到谁有一个叫亚历克斯的孩子。 我无法在SQL中使用,因为在同一单元格中有多个名称。 所以我用-看起来很聪明,但同时我像Alex一样开始一切:( Alexandre或我想获得dia,但结果是dia和diana :( 如何获得该数据类型的单个Alex? 我希望我能用我的英语不好来解释我的问题:D 问题答案: 最好的解决方案是规范您的架构。您应该有一

  • 问题:有没有办法知道收集中样本文档的实际大小(即oplog)? 我的oplog对于数据来说似乎太小了。我知道哪些查询可能是最大的贡献者,但我想在这样做之前评估一下减少查询的影响。 以下是一些背景: PS:一般来说,每个文档平均250kb似乎太多了,不是吗? 提前谢谢你!

  • 问题内容: 我想找到列的2nd,3rd,… nth个最大值。 问题答案: 您可以将列排序为降序格式,然后仅从第n行获取值。 编辑:: 根据评论请求进行了更新。 警告 完全未经测试! 类似于上面的内容对于Oracle应该适用…您可能必须首先正确使用语法!

  • 我现在在大学学习数据库,在我的项目中,我有3个表:、和 联赛(leagueId,leagueName) 团队(teamId,teamName) 具有(leagueId,teamId,year)

  • 问题内容: 我有这两个表: 学生: 班级: 我想给这个名字显示最后一个注册每个classId的学生的名字。这意味着,我应该为classId 1获得一个名称,为classId 2获得一个名称,以此类推。首先获取邮件(之后才知道学生的名字)的解决方案是: 它会打印最大日期,这是可以的,但同时也会为每个日期打印错误的邮件: 这是完全错误的()。因此,当我尝试加入用于获取名称的值时,会得到不正确的值。 换