"15. Show All Games with Duration" FROM Built-in Functions HOMEWORK
Някой ще помогне ли? Уж всичко е както трябва, но джъдж не го приема.
Код: http://pastebin.com/3QdHQFWP
Задача: " Find all games with part of the day and duration sorted by game name alphabetically then by duration and part of the day (all ascending). Parts of the day should be Morning (time is >= 0 and < 12), Afternoon (time is >= 12 and < 18), Evening (time is >= 18 and < 24). Duration should be Extra Short (smaller or equal to 3), Short (between 4 and 6 including), Long (greater than 6) and Extra Long (without duration). Submit your query statements as Prepare DB & run queries."
Здравей,
За да видим как трябва да сортираме данните, нека да видим примера, който е даден:
1. Ablajeck , Morning, Long
2. Ablajeck, Afternoon, Short
Редовете са сортирани по [Name], [Duration] (alphabetically), [Part of the Day], защото от лексикална гледна точка "L" е преди "S". Това, на което трябва да се обърне внимание е - Duration e 3-тата колона, коята изкарваме, а не втората, може би това е довело до объркването по-горе. :)
Мерси за разяснението ;) мисля че объркването идва L < S (in terms of alphabetical order), Long > Short (in terms of duration). В задачата е писано [Name] (alphabetically), then by [Duration], [Part of the Day]... дали съм аз или словоред и думички не знам... но поне я разкостихме задачата ;)
аз така я издокарах...и мина :
SELECT g.name AS Game, CASE WHEN HOUR(g.start) >= 0 AND HOUR(g.start) < 12 THEN 'Morning' WHEN HOUR(g.start) >= 12 AND HOUR(g.start) < 18 THEN 'Afternoon' WHEN HOUR(g.start) >= 18 AND HOUR(g.start) < 24 THEN 'Evening' END AS 'Part of the Day', CASE WHEN g.duration IS NULL THEN 'Extra Long' WHEN g.duration <= 3 THEN 'Extra Short' WHEN g.duration BETWEEN 4 AND 6 THEN 'Short' WHEN g.duration BETWEEN 7 AND 10 THEN 'Long' ELSE 'Extra Long' END AS 'Duration' FROM games AS g ORDER BY g.name ASC, CASE WHEN g.duration IS NULL THEN 'Extra Long' WHEN g.duration <= 3 THEN 'Extra Short' WHEN g.duration BETWEEN 4 AND 6 THEN 'Short' WHEN g.duration BETWEEN 7 AND 10 THEN 'Long' ELSE 'Extra Long' END, CASE WHEN HOUR(g.start) >= 0 AND HOUR(g.start) < 12 THEN 'Morning' WHEN HOUR(g.start) >= 12 AND HOUR(g.start) < 18 THEN 'Afternoon' WHEN HOUR(g.start) >= 18 AND HOUR(g.start) < 24 THEN 'Evening' END;