Loading...
Hristo_Penchev avatar Hristo_Penchev 389 Точки

[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 като отбелязани голове и дата. Тоест може да се разглежда като отложен и да не се брои. Но това мисля, че е супер специфична ситуация и е по-скоро недомислица в условието. Или аз греша в решението си. Споделете кой как я е решил.

Тагове:
1
Advanced Level: Back-End
Hristo_Penchev avatar Hristo_Penchev 389 Точки

Разгледах авторското решение и видях, че там за клубните мачове не се вадят държавите по отбори, а се вади държавата, към която принадлежи лигата, за която се е играл мачът. Тъй като мач номер 5 се е играш за Шампионската лига, към която няма закачена държава, авторското решение не го отчита. Според мен подобно тълкуване е некоректно и верният отговор не съвпада с този в Judge.

0
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Аз не join-вам таблицата Teams, защото е излишно. В таблицата TeamMatches си има информация за коя лига се отнася, така че е по-лесно да се join-ва Leagues таблицата.

0
Hristo_Penchev avatar Hristo_Penchev 389 Точки

Да де, ама ако мачът е от Шампионската лига, както в случая? Шампионската лига не се отнася към никоя държава. А все пак клубове от тази държава са изиграли мач.

1
ibakyrdjiev avatar ibakyrdjiev 172 Точки

Добре е да знаеш, че и json-a не се валидира :)

1
Hristo_Penchev avatar Hristo_Penchev 389 Точки

Благодаря, това е ценна информация. Ще ми спести много псуване и нерви.

1
Hristo_Penchev avatar Hristo_Penchev 389 Точки

JSON-a явно са го оправили, вече се валидира.

0
a.angelov avatar a.angelov 1316 Точки

Като цяло при изпитите по БД, които са минали досега, забелязвам, че всеки си има по 1-2 задачи с неясни условия. Трябва да си едва ли не гадател за да предвидиш какво точно се иска и по какви критерии трябва да се селектират исканите данни. Също и грешни примерни output-и и авторски решения - примерно задача 9 от поправката /специално за нея си мисля дали причината не е в последваща смяна на тестовете, защото друго обяснение не успях да намеря.../.

Силно се надявам изпита в неделя да е по-добре изпипан и с коректни условия.

2
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.