Выберите MAX SUM для столбца с двумя группами по столбцам (верхняя 1-я группа по столбцу только 1) - PullRequest
0 голосов
/ 21 октября 2018
Table querying on:
COL1        COL2    COL3 
ABC1        ORG1    1.5
ABC1        ORG2    4.5
ABC1        ORG1    2.0
ABC1        ORG2    3.0
ABC1        ORG3    1.0
ABC1        ORG3    5.5
ABC1        ORG3    2.5
ABC1        ORG4    40.0
ABC2        ORG1    1.5
ABC2        ORG2    5.0
ABC2        ORG1    2.0
ABC2        ORG2    25.0
ABC2        ORG3    1.0
ABC2        ORG3    5.5
ABC2        ORG3    2.5
ABC2        ORG4    20.0
ABC3        ORG1    15.5
ABC3        ORG2    4.5
ABC3        ORG1    5.0
ABC3        ORG2    3.0
ABC3        ORG3    1.0
ABC3        ORG3    5.5
ABC3        ORG3    2.5
ABC3        ORG4    10.0


Output:
COL1        COL2    COL3 
ABC1        ORG4    40.0
ABC2        ORG2    30.0
ABC3        ORG1    20.5

Мне нужен вывод, который сначала вычисляет сумму столбца 3 и выбирает максимум для столбца 2, но также имеет результат col1, как показано в выводе.Я пробовал работать с окнами, но, похоже, очень медленно, потому что я запускаю его для миллиона записей, и мне было интересно, как его оптимизировать или как использовать его с функцией rownumber:

select * from
    (select col1, col2
      , sum(col3) as Tot
      , max(sum(col3)) over (partition by col1) as MSum
      from table1
    group by col1, col2)
a
where a.tot = a.Msum
...