Loading...
ivan.d.uzunov avatar ivan.d.uzunov 22 Точки

"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."

Тагове:
0
Module: C# DB
gvanastasov avatar gvanastasov 52 Точки

Значи след около 10на опита ми се отигра да мъча да напасна дъджа, за това давам до къде съм я докарал аз и малко насока за това което ти си постнал. Най-напред, когато ползваш CASE...WHEN...THEN, след THEN ти задаваш типа на изходните данни на колонката - в случая 'Morning', 'Afternoon' - varchar - следователно ако ползваш тази колонка за ORDER BY, ще ти ги подреди по азбучен ред, където Morning > Afternoon (тоест това не е което искаме ;)). Аз го заобиколих това, като подадох нов CASE на ORDER BY, където сравнявам дата от тип int. На второ място - в задачата пише - ORDER BY - name alphabetically then by duration and part of the day (all ascending). Само че ако погледнем Example-a:

1. Ablajeck , Morning, Long

2. Ablajeck, Afternoon, Short

, тези записи са подредени по [Name], [Part of the Day], [Duration] , а не както е дадено в условието [Name], [Duration], [Part of the Day]

Ако някой е мръднал задачата до край, и аз ще се радвам да видя къде е скритата спънка :) - или разбира се по-красиворешение от моето, че като видя повтарящ се код - нещо ми TZ-ка :D

http://pastebin.com/c45efvSp

EDIT:

Отказвам да играя игра на думички - ето решението - което няма много общо със заданието ама както и да е: http://pastebin.com/1dG9bALs

Дано да ти помогне :)

0
29/01/2017 15:18:18
Gesh4o avatar Gesh4o Trainer 305 Точки

Здравей,

За да видим как трябва да сортираме данните, нека да видим примера, който е даден:

  1. Ablajeck , Morning, Long

  2. Ablajeck, Afternoon, Short

Редовете са сортирани по  [Name], [Duration] (alphabetically), [Part of the Day], защото от лексикална гледна точка "L" е преди "S". Това, на което трябва да се обърне внимание е - Duration e 3-тата колона, коята изкарваме, а не втората, може би това е довело до объркването по-горе. :)

1
gvanastasov avatar gvanastasov 52 Точки

Мерси за разяснението ;) мисля че объркването идва L < S (in terms of alphabetical order), Long > Short (in terms of duration). В задачата е писано [Name] (alphabetically), then by [Duration], [Part of the Day]... дали съм аз или словоред и думички не знам... но поне я разкостихме задачата ;)

1
NikolayBonev avatar NikolayBonev 2 Точки

аз така я издокарах...и мина :


 

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