相关疑难解决方法(0)

SQL挑战/难题:给定堆栈跟踪 - 如何在每个时间点找到顶部元素?

  • 我的真实用例是合并嵌套范围.我画了一些草图然后我看到范围开始和结束之间的相似性来叠加PUSH和POP操作.我明白解决这个问题也会解决原来的问题.

  • 柱实际上可以从问题中移除.当val为NULL时,它是POP操作,否则它是PUSH操作.

谜题

stack_trace包含以下列:

  • i - 表示某个时间点的整数值.
  • op - 2个可能的操作:I("in"/"push")和O("out"/"pop").
  • val - "in"/"push"操作插入的值或"out"/"pop"操作的NULL.

    目标是在每个时间点(i)找到堆栈顶部的值.

例如

(NULL值在此表示为空格)

数据:

i   op  val 
--  --  --  
1   I   A   
2   I   B   
3   O
4   I   C
5   O    
6   O   
Run Code Online (Sandbox Code Playgroud)

要求的结果:

i   top_of_stack_val
--  ----------------
1   A
2   B
3   A
4   C
5   A
6   
Run Code Online (Sandbox Code Playgroud)

要求

  • 解决方案应该是单个SQL查询(子查询很好).
  • 只允许使用以下子句:SELECT,FROM,WHERE,GROUP BY,HAVING, …

sql sql-server oracle hive teradata

5
推荐指数
1
解决办法
409
查看次数

标签 统计

hive ×1

oracle ×1

sql ×1

sql-server ×1

teradata ×1