Извлечь строку с минимальными значениями для нескольких столбцов - PullRequest
0 голосов
/ 13 января 2020

Я хочу получить ID, мин (YEAR_A), мин (QUARTER_A), мин (YEAR_B), мин (QUARTER_B) для каждого ID:

ID   TOTAL_A   TOTAL_B   YEAR_A   QUARTER_A   YEAR_B   QUARTER_B    
----------------------------------------------------------------
10      100      200      2005       1         2016       4  
10      100      200      2005       2         2016       3    
10      100      200      2005       3         2016       2    
10      100      200      2005       4         2016       1    
11      200      300      2011       1         2018       4    
11      200      300      2011       2         2018       3    
11      200      300      2011       3         2018       2    
11      200      300      2011       4         2018       1  

Результат должен быть:

ID   TOTAL_A   TOTAL_B   YEAR_A   QUARTER_A   YEAR_B   QUARTER_B    
----------------------------------------------------------------
10     100       200     2005         1       2016         1  
11     200       300     2011         1       2018         1    

Следующий запрос выполняет работу, но он неэффективен

SELECT DISTINCT 
    ID,
    TOTAL_A, YEAR_A, QUARTER_A,
    TOTAL_B, YEAR_B, QUARTER_B
FROM 
    (SELECT 
         ID,
         TOTAL_A, YEAR_A, QUARTER_A,
         TOTAL_B, YEAR_B, QUARTER_B
         MIN(YEAR_A) OVER (PARTITION BY ID) MIN_YEAR_A,
         MIN(QUARTER_A) OVER (PARTITION BY ID) MIN_QUARTER_A,
         MIN(YEAR_B) OVER (PARTITION BY ID) MIN_YEAR_B,
         MIN(QUARTER_B) OVER (PARTITION BY ID) MIN_QUARTER_B
     FROM 
         TABLE)
WHERE
    YEAR_A =  MIN_YEAR_A
    AND QUARTER_A = MIN_QUARTER_A
    AND YEAR_B = MIN_YEAR_B
    AND QUARTER_B = MIN_QUARTER_B
ORDER BY
    ID;

Есть идеи?

1 Ответ

2 голосов
/ 13 января 2020
select ID, min(YEAR_A), min(QUARTER_A), min(YEAR_B), min(QUARTER_B)
from table
group by ID;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...