从一列中查找max(value)和min(value),并从同一行的各个其他字段中提取记录

时间:2016-02-20 19:11:34

标签: sql oracle

通过Oracle使用SQL

这是一个模拟我的数据格式的方法

Unique_id    Search_Date    Value
    1               01-Jan-2015      3
    1               02-Jan-2015     -5
    1               03-Jan-2015      8
    2               01-Jan-2015     17
    2               02-Jan-2015     20
    2               03-Jan-2015    -50
    3               01-Jan-2015      4
    3               02-Jan-2015     24
    3               03-Jan-2015    -12

enter image description here

我需要拉出max(value),min(value)PER unique_id,我需要提取这些聚合的确切search_date。

有什么想法吗?我可以为每个hotel_id提取最大值和最小值,但我无法提取search_date值。

1 个答案:

答案 0 :(得分:3)

在Oracle中,您可以通过聚合执行此操作:

select unique_id, max(value), min(value),
       max(search_date) keep (dense_rank first order by value asc) as date_min, 
       max(search_date) keep (dense_rank first order by value desc) as date_max
from t
group by unique_id;