[EXAM 22.07.2015] Problem 12
Здравейте, колеги,
Тръгнах да решавам задачата по следния начин :
SELECT
c.CountryName AS [Country Name],
COUNT(DISTINCT(im.Id)) AS [International Matches],
COUNT(DISTINCT(tm.Id)) AS [Team Matches]
FROM Countries c
LEFT OUTER JOIN InternationalMatches im ON c.CountryCode = im.HomeCountryCode OR c.CountryCode = im.AwayCountryCode
LEFT OUTER JOIN Teams t ON c.CountryCode = t.CountryCode
LEFT OUTER JOIN TeamMatches tm ON t.Id = tm.HomeTeamId OR tm.Id = tm.AwayTeamId
GROUP BY CountryName
HAVING COUNT(DISTINCT(im.Id)) > 0 OR
COUNT(DISTINCT(tm.Id)) > 0
ORDER BY [International Matches] DESC, [Team Matches] DESC, [Country Name] ASC
Накратко - броя ID-тата на международните мачове, в които е участвал всеки отбор. Броя и ID-тата на мачовете, в които е участвал поне един отбор от дадена държава. Обаче според отговорите има само един мач на германски клуб, Обаче като погледнем в базата, мачовете са два - С Id = 3 и id = 5. Тоест мачовете са два. Действително, на мач номер 5 имаме NULL като отбелязани голове и дата. Тоест може да се разглежда като отложен и да не се брои. Но това мисля, че е супер специфична ситуация и е по-скоро недомислица в условието. Или аз греша в решението си. Споделете кой как я е решил.