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

获取每个组的下一个最小值,大于或等于给定值

徐弘图
2023-03-14
问题内容

给出以下表1:

    RefID  intVal  SomeVal
    ----------------------
        1      10    val01
        1      20    val02
        1      30    val03
        1      40    val04
        1      50    val05
        2      10    val06
        2      20    val07
        2      30    val08
        2      40    val09
        2      50    val10
        3      12    val11
        3      14    val12
        4      10    val13
        5     100    val14
        5     150    val15
        5    1000    val16

和Table2包含一些RefID和intVals,例如

    RefID  intVal
    -------------
        1      11    
        1      28    
        2       9    
        2      50    
        2      51    
        4      11    
        5       1    
        5     150    
        5     151

需要SQL语句来获取每个RefID和NULL的下一个更大的intValue(如果在表1中找不到),则以下是预期结果

    RefID  intVal  nextGt  SomeVal 
    ------------------------------
        1      11      20  val01
        1      28      30  val03
        2       9      10  val06
        2      50      50  val10
        2      51    NULL   NULL
        4      11    NULL   NULL
        5       1     100  val14
        5     150     150  val15
        5     151    1000  val16

帮助将不胜感激!


问题答案:

派生表a从给定的表1refid和表2检索最小值intVal。外部查询仅检索someValue。

select a.refid, a.intVal, a.nextGt, table1.SomeVal
from
(
    select table2.refid, table2.intval, min (table1.intVal) nextGt
      from table2
      left join table1
        on table2.refid = table1.refid
       and table2.intVal <= table1.intVal
     group by table2.refid, table2.intval
) a
-- table1 is joined again to retrieve SomeVal 
left join table1
  on a.refid = table1.refid
 and a.nextGt = table1.intVal

这是带有现场测试的Sql Fiddle。



 类似资料:
  • 问题内容: 这可能很简单,但是找不到方法。我试图找到每个实体的最大修订小于或等于给定的修订号。 上面的代码按降序返回同一实体的多个修订。我想获得每个实体的最新不同修订版本,该修订版本应小于或等于给定的修订版本号。 作为一种解决方法,我正在过滤resultSet,如下所示。我希望可以在AuditQuery本身上进行此过滤。 解: 我们需要使用 [https://hibernate.atlassian

  • 给定一个2D数组和一个数字。 问题:我们有一个矩阵,矩阵的每个单元格表示遍历该单元格的成本。我们从左上角开始,我们必须到达最后一个单元格(右下角)。我必须编写一个函数,返回到达而不超过的最大代价路径的代价。 如果找不到最大和小于或等于的路径,则返回,矩阵的值不能为负 解决方案:我尝试了很多代码,但没有一个返回我期望的结果。 我的第一个解决方案是在一个简单的数组中转换2D数组,并应用背包算法,但它不

  • 给定一个有N个整数的数组A,我们需要找到子数组的最高和,使得每个元素小于或等于给定的整数X 示例:设 N=8 且数组为 [3 2 2 3 1 1 1 3] 。现在,如果 x=2,那么如果我们考虑 1 个基本索引,则通过求和 A[2] A[3] 来回答 4。如何在 O(N) 或 O(N*logN) 中执行此问题 目前,我通过检查每个可能的子阵列来采用O(N^2)方法。如何降低复杂性?

  • 这个问题有多项式解吗?如果有,你能呈现吗?

  • 本文向大家介绍写一个获取数组的最大值、最小值的方法相关面试题,主要包含被问及写一个获取数组的最大值、最小值的方法时的应答技巧和注意事项,需要的朋友参考一下 es6

  • 问题内容: 两个或多个值中的最小值或最大值是可能的。我需要这样的东西: 我可以仅使用MySQL来实现吗? 问题答案: 您可以使用和功能来实现它。 两者都在这里描述了http://dev.mysql.com/doc/refman/5.0/en/comparison- operators.html