在保持所有记录的同时在组内标记最大值和最小值

问题描述:

preferable_output_of_dataset 我有一个由多行组成的大数据集,但最相关的两个数据集是时间和time_id。 (见附件)。 Time_id可以被视为给定组的名称,时间是每行的排名。 - 这些字段已在数据集内设置,不能更改。我想创建一个新字段,标记每个组的最大和最小'时间',但同时保留所有记录。我希望我的输出看起来与附件完全相同。我已经能够轻松地提取最大值和最小值,但是当我尝试保留组中的所有记录时,我遇到了问题。感谢您的帮助提前。在保持所有记录的同时在组内标记最大值和最小值

select 
    time 
    ,time_id 
from my_table 
+0

最好将样本数据添加为* formatted *文本到您的问题而不是屏幕截图。 –

这可以很容易地使用window functions来完成:

select "time", 
     time_id, 
     case 
      when "time" = max(time) over (partition by time_id) then 'min' 
      when "time" = min(time) over (partition by time_id) then 'max' 
      else 'other' 
     end 
from my_table; 

无关,而是:time是一列一个可怕的名字。不仅因为它是保留字,而且因为它没有记录列的含义。它是“开始时间”,“结束时间”,“持续时间”,“偏移量”......?