Гуру СУБД, подскажите куда копать, запутался как джойнить последние n записей по двум полям :)
Рад любой помощи - как это делать, какие фунции использовать, как вообще в нормальных продуктах такое делают. Таблицы и связи делал сам, могу переделать если поможет.
Есть табличка с фирмами
company (id, name)
1, google
2, amazon
и табличка с оборотами этих фирм и композитным первичным ключом (company_id + year + quarter)
company_turnover (company_id, year, quarter, turnover)
1, 2024, 3, 100
1, 2024, 2, 90
2, 2023, 4, 20
2, 2023, 3, 30
Мне надо составить два запроса:
- К таблице company заджойнить данные по обороту за самый последний квартал последнего года которые есть в бд. Т.е. для каждой фирмы найти самый последний год/квартал и показать оттуда оборот, типа:
1, google, 2024, 3, 100
2, amazon, 2023, 4, 20
Я пробовал max, greatest, over, group by - и все они дают не совсем то что мне нужно - то берут макс год/квартал из всей таблицы а не для фирмы, то берут макс год и макс квартал а не их комбинацию и так далее.
- К таблице company заджойнить сумму оборотов за последние 4 квартала, типа:
1, google, 190
2, amazon, 50
Сюда я пока не совался пока с первым не разобрался, будет на десерт :)
ChatGPT дает много всего, но я в нем честно говоря не уверен. Он как-то как-будто переусложняет и не дает точно то что нужно мне.