Соединения и подзапросы на SQL сервере - PullRequest
0 голосов
/ 09 июля 2020

введите описание изображения здесь

Я пытаюсь найти все континенты и их наиболее используемую валюту.

  • ContinentCode
  • CurrencyCode
  • CurrencyUsage

Я не знаком с группировкой, поэтому буду очень благодарен, если вы дадите мне подсказку, используя только подзапросы и объединения, если они могут быть адекватно использованы здесь.

введите описание изображения здесь

введите описание изображения здесь

1 Ответ

1 голос
/ 10 июля 2020

Присоединяйтесь к странам континентам. Затем суммируйте, чтобы получить количество используемых валют. Затем используйте row_number() (или rank(), если вы хотите сохранить связи), чтобы получить порядковый номер для каждого континента - чем больше используется валюта, тем меньше порядковый номер. Получите только строки, в которых этот порядковый номер равен 1.

SELECT x.continentcode,
       x.currencycode,
       x.currencyusage
       FROM (SELECT ct.continentcode,
                    cy.currencycode,
                    count(cy.currencycode) currencyusage,
                    row_number() OVER (PARTITION BY ct.continentcode
                                       ORDER BY count(cy.currencycode) DESC) rn
                    FROM continents ct
                         LEFT JOIN countries cy
                                   ON cy.continentcode = ct.continentcode
                    GROUP BY ct.continentcode,
                             cy.currencycode) x
       WHERE x.rn = 1;

И в следующий раз не размещайте изображения таблиц. Вместо этого вставьте операторы CREATE и INSERT, чтобы создать их как текст .

...