Вложенные уровни наибольшего числа n на группу для запроса реляционной базы данных - PullRequest
0 голосов
/ 18 июня 2020

Это была горячая проблема в реляционной базе данных с тегом greatest-n-per-group, обратитесь к этому: найти наибольшее значение для каждой группы

Но теперь есть более сложный сценарий:

|  id | year | rev |        content |
| --: | ---: | --: | -------------: |
|   1 | 2019 |   1 | content2019_11 |
|   1 | 2019 |   2 | content2019_12 |
|   1 | 2019 |   3 | content2019_13 |
|   1 | 2020 |   1 | content2020_11 |
|   1 | 2020 |   2 | content2020_12 |
|   1 | 2020 |   5 | content2020_15 |
|   2 | 2019 |   1 | content2019_21 |
|   2 | 2019 |   2 | content2019_22 |
|   2 | 2020 |   1 | content2020_21 |
|   2 | 2020 |   4 | content2020_24 |

Ожидаем результата:

|  id | year | rev |        content |
| --: | ---: | --: | -------------: |
|   1 | 2020 |   5 | content2020_15 |
|   2 | 2020 |   4 | content2020_24 |

Это означает, что сначала необходимо сгруппировать по, чтобы получить максимальную ревизию, затем сгруппировать по, чтобы получить максимальный год, а затем снова присоединиться к результату поиска в получить другие поля. Это сложно в одном запросе. Похоже, мне нужно создать временные представления.

Есть идеи по этому поводу? Большое спасибо.

вот sqlfiddle со схемой, которую вы можете попробовать

...