# Zkouska 26.5. - SQL dotazy, oddeleni s ER modelem pro piraty

<{ForumPost(poster="beny", timestamp=2009-06-02 17:11:48)}>
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!;-)
<{/ForumPost}>

<{ForumPost(poster="Him", timestamp=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:*

- *![shot00031](/NDBI025/Zkou%C5%A1ka%202009-05-26/shot00031.png)*

<{/ForumPost}>

<{ForumPost(poster="Wideman", timestamp=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](http://technet.idnes.cz/v-praze-vznika-system-pro-boj-se-somalskymi-piraty-f88-/tec_technika.asp?c=A090609_122036_tec_technika_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
<{/ForumPost}>

<{ForumPost(poster="zbytovsky", timestamp=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


<{/ForumPost}>

