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

Wel*_*lls 3 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
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

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

有任何想法吗?我可以提取每个hotel_id 的最大值和最小值,但我不能提取search_date 值。

Gor*_*off 5

在 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;
Run Code Online (Sandbox Code Playgroud)