Создайте временную таблицу, показывающую наиболее насыщенную событиями страну за каждый год в SQL Server. - PullRequest
0 голосов
/ 21 марта 2019

У меня есть упражнение на SQL Server: у меня есть две таблицы Country и Events.

В таблице Events содержатся сведения о событии, включая город, в котором произошло событие. Таблица Events имеет внешний ключ CountryID (CountryID - это первичный ключ в таблице Country).

Мне нужно создать временную таблицу, показывающую наиболее насыщенную событиями страну за каждый год.

Буду признателен за любую помощь

Спасибо

1 Ответ

0 голосов
/ 21 марта 2019

Вы были не за горами с вашей попыткой, но вам нужно использовать CTE для объединения ваших данных в первую очередь. Я предположил, что важен окончательный порядок ваших данных, поэтому я использовал второй CTE, а не TOP 1 WITH TIES tio для получения окончательного результата:

WITH CTE AS(
    SELECT YEAR(e.EventDate) AS YearOfEvent,
           c.CountryName,
           COUNT(e.CountryID) AS NumberOfEvents
FROM [dbo].[tblEvent] AS e
     INNER JOIN tblCountry AS c ON e.CountryID = c.CountryID
GROUP BY e.CountryId,
         c.CountryName,
         YEAR(e.EventDate)),
RNs AS(
    SELECT YearOfEvent,
           CountryName,
           NumberOfEvents,
           ROW_NUMBER() OVER (PARTITION BY YearOfEvent ORDER BY CTE.NumberOfEvents DESC) AS RN
    FROM CTE)
SELECT YearOfEvent,
       CountryName,
       NumberOfEvents
FROM RNs
WHERE RN = 1
ORDER BY RNs.YearOfEvent ASC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...