Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- WITH CountriesAndTheirHighestPeakElevations_CTE (CountryName,
- CountryCode,
- HighestPeakElevation)
- AS
- (
- SELECT c.CountryName,
- c.CountryCode,
- MAX(p.Elevation) AS [Highest Peak Elevation]
- FROM Countries AS c
- LEFT OUTER JOIN MountainsCountries AS mc
- ON mc.CountryCode = c.CountryCode
- LEFT OUTER JOIN Mountains AS m
- ON m.Id = mc.MountainId
- LEFT OUTER JOIN Peaks AS p
- ON p.MountainId = m.Id
- GROUP BY c.CountryName, c.CountryCode
- ),
- MountainsAndTheirHighestPeaks_CTE (MountainId,
- MaximumPeakElevation)
- AS
- (
- SELECT mc.MountainId,
- MAX(p.Elevation)
- FROM MountainsCountries AS mc
- INNER JOIN Peaks AS p
- ON mc.MountainId = p.MountainId
- GROUP BY mc.MountainId
- )
- SELECT TOP(5) countries_cte.CountryName as [Country],
- CASE
- WHEN p.PeakName IS NULL THEN '(no highest peak)'
- ELSE p.PeakName
- END AS [Highest Peak Name],
- CASE
- WHEN countries_cte.HighestPeakElevation IS NULL THEN '0'
- ELSE countries_cte.HighestPeakElevation
- END AS [Highest Peak Elevation],
- CASE
- WHEN m.MountainRange IS NULL THEN '(no mountain)'
- ELSE m.MountainRange
- END AS [Mountain]
- FROM CountriesAndTheirHighestPeakElevations_CTE AS countries_cte
- LEFT OUTER JOIN MountainsAndTheirHighestPeaks_CTE AS mountains_cte
- ON countries_cte.HighestPeakElevation = mountains_cte.MaximumPeakElevation
- LEFT OUTER JOIN Mountains AS m
- ON mountains_cte.MountainId = m.Id
- LEFT OUTER JOIN Peaks AS p
- ON m.Id = p.MountainId AND
- countries_cte.HighestPeakElevation = p.Elevation
- ORDER BY countries_cte.CountryName ASC,
- p.PeakName ASC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement