Ahoj!
Chtel jsem se zeptat lidi, kteri psali zkouskovou pisemku 26.5. a meli oddeleni se somalskymi piraty, jestli by tady nemohli napsat SQL dotazy z druheho prikladu. Tedy dotazy na 1)dvojice rok a prepad, kde prepad je nejvynosnejsim prepadem roku a 2)jmeno ziveho pirata, ktery prepadl nejvetsi pocet americkych lodi.
Diky za jakoukoli odpoved!;-)
Zkouska 26.5. - SQL dotazy, oddeleni s ER modelem pro piraty
beny at 2009-06-02 17:11:48
Him at 2009-06-08 20:49:26
1] Nejvynosnejsi prepady za jednotliva leta (z hlediska sumy vykupneho)
SELECT Lod.Nazev, tab1.Datum, Max(suma)
FROM
( -- zjistim si, kolik ziskali pirati na danem prepadu
SELECT Prepad.Datum, Prepad.LodID, Sum(SkutecneVykupne) AS suma
FROM Prepad NATURAL JOIN UnosOsoby
WHERE UnosOsoby.JeZajmut = FALSE -- uz je propusten za vykupne
GROUP BY Prepad.Datum, Prepad.LodID
) AS tab1, Lod
WHERE Lod.ID = tab1.LodID
GROUP BY GetYear(tab1.datum)
Budu rad za feedback, co na to rikas - je to dobre / spatne :)
Attachments:
Wideman at 2009-06-09 23:32:21
Je to sice silně OT, ale protože jsem zrovna tuhle verzi testu psal, tak jsem to nemohl přejít: http://technet.idnes.cz/v-praze-vznika- ... chnika_nyv Třeba jsme svými ER modely přispěli k tvorbě tohoto systému a ani o tom nevíme. To přece nemůže bejt náhoda. :D
zbytovsky at 2011-01-12 11:27:36
ad 1) tohle by určitě nefungovalo, protože když použijeme GROUP BY xxxx, v SELECT smí být pouze xxx a libovolné agregační funkce.
Na cvičení jsme to tuším řešili (nestandardně) přes LIMIT:
SELECT Lod.Nazev, Year(tab1.Datum), suma
FROM
( -- zjistim si, kolik ziskali pirati na danem prepadu
SELECT Prepad.Datum, Prepad.LodID, Sum(SkutecneVykupne) AS suma
FROM Prepad NATURAL JOIN UnosOsoby
WHERE UnosOsoby.JeZajmut = FALSE -- uz je propusten za vykupne
GROUP BY Prepad.Datum, Prepad.LodID
) AS tab1, Lod
WHERE Lod.ID = tab1.LodID
GROUP BY Year(tab1.datum)
ORDER BY suma DESC LIMIT 1
