Advertisement
simonradev

Highest Peak Name and Elevation by Country

Sep 14th, 2017
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 1.66 KB | None | 0 0
  1. WITH CountriesAndTheirHighestPeakElevations_CTE (CountryName,
  2.                                                  CountryCode,
  3.                                                  HighestPeakElevation)
  4. AS
  5. (
  6.     SELECT c.CountryName,
  7.            c.CountryCode,
  8.            MAX(p.Elevation) AS [Highest Peak Elevation]
  9.      FROM Countries AS c
  10.      LEFT OUTER JOIN MountainsCountries AS mc
  11.      ON mc.CountryCode = c.CountryCode
  12.      LEFT OUTER JOIN Mountains AS m
  13.      ON m.Id = mc.MountainId
  14.      LEFT OUTER JOIN Peaks AS p
  15.      ON p.MountainId = m.Id
  16.      GROUP BY c.CountryName, c.CountryCode
  17. ),
  18. MountainsAndTheirHighestPeaks_CTE (MountainId,
  19.                                    MaximumPeakElevation)
  20. AS
  21. (
  22.     SELECT mc.MountainId,
  23.            MAX(p.Elevation)
  24.      FROM MountainsCountries AS mc
  25.      INNER JOIN Peaks AS p
  26.      ON mc.MountainId = p.MountainId
  27.      GROUP BY mc.MountainId
  28. )
  29.  
  30. SELECT TOP(5) countries_cte.CountryName as [Country],
  31.               CASE
  32.                WHEN p.PeakName IS NULL THEN '(no highest peak)'
  33.                ELSE p.PeakName
  34.               END AS [Highest Peak Name],
  35.               CASE
  36.                WHEN countries_cte.HighestPeakElevation IS NULL THEN '0'
  37.                ELSE countries_cte.HighestPeakElevation
  38.               END AS [Highest Peak Elevation],
  39.               CASE
  40.                WHEN m.MountainRange IS NULL THEN '(no mountain)'
  41.                ELSE m.MountainRange
  42.               END AS [Mountain]
  43.  FROM CountriesAndTheirHighestPeakElevations_CTE AS countries_cte
  44.  LEFT OUTER JOIN MountainsAndTheirHighestPeaks_CTE AS mountains_cte
  45.  ON countries_cte.HighestPeakElevation = mountains_cte.MaximumPeakElevation
  46.  LEFT OUTER JOIN Mountains AS m
  47.  ON mountains_cte.MountainId = m.Id
  48.  LEFT OUTER JOIN Peaks AS p
  49.  ON m.Id = p.MountainId AND
  50.     countries_cte.HighestPeakElevation = p.Elevation
  51.  ORDER BY countries_cte.CountryName ASC,
  52.           p.PeakName ASC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement