Úvod do SQL Hodina č. 4 Osnova • Opakování • Doplnění “date” a “string” funkcí • Agregační funkce • A pak a tak DB pro dnešní den fund2018.jdem.cz Tabulka “fund” Rozcvička! Kolik lidí přispělo skrze web 1000 nebo 100 korun? SELECT * FROM fund WHERE zdroj = “web” AND (castka = 100 OR castka = 1000) Funkce f(x) = (x-10)2 - 8 Funkce "Kouzlo!" Funkce "Kouzlo!" Round() "Kouzlo!" Round(10.123) 10.123 "Kouzlo!" Round(10.123) 10.123 10 "Kouzlo!" Round(10.123, 1) 10.123 10.1 1 "Kouzlo!" Round(10.123, 1) 10.123 10.1 1 "Kouzlo!" Agregační funkce AVG, MIN, MAX, COUNT, SUM Agregační funkce Kouzlo! Číslo/řetězec Agregační funkce Kouzlo! sloupec Číslo/řetězec Agregační funkce Kouzlo! sloupec Číslo/řetězec Práce! Jaký je průměrný příspěvek z webu? SELECT AVG(castka) FROM fund WHERE zdroj = “web” Složené funkce Složené funkce ROUND(AVG(castka), 1) A ještě! Jaká byla nejvyšší a nejnižší výše příspěvku? Jedním dotazem! SELECT MAX(castka), MIN(castka) FROM fund “Date” funkce https://www.sqlite.org/lang_datefunc.html “Date” funkce strftime() strftime(format, timestring, modifier, modifier, ...) Jak vybrat květnové příspěvky? 1. Tzv. varianta “hodně na sílu” jak vybrat květnové příspěvky 6 způsobů SELECT * FROM fund WHERE datum = “2013-05-01” OR datum = “2013-05-02” … 1. Tzv. varianta “hodně na sílu” 2. Bez znalosti date/string funkcí A. 2x pomocí nerovností jak vybrat květnové příspěvky 6 způsobů SELECT * FROM fund WHERE datum >= “2013-05-01” AND datum < “2013-06-01” díky použití prvního dne následujícího měsíce nemusíte znát kolik dnů má květen 1. Tzv. varianta “hodně na sílu” 2. Bez znalosti date/string funkcí A. 2x pomocí nerovností B. Bez nich! jak vybrat květnové příspěvky 6 způsobů SELECT * FROM fund WHERE datum LIKE “2013-05-%” 1. Tzv. varianta “hodně na sílu” 2. Bez znalosti date/string funkcí A. 2x pomocí nerovností B. Bez nich! 3. Pouze se znalostí “date” funkcí jak vybrat květnové příspěvky 6 způsobů SELECT * FROM fund WHERE strftime(“%m”, datum) = “05” 6 způsobů 1. Tzv. varianta “hodně na sílu” 2. Bez znalosti date/string funkcí A. 2x pomocí nerovností B. Bez nich! 3. Pouze se znalostí “date” funkcí 4. Pouze se znalostí “string” funkcí jak vybrat květnové příspěvky SELECT * FROM fund WHERE SUBSTR(datum, 6, 2) = “05” jak vybrat květnové příspěvky 6 způsobů V žádném případě vás nebudeme zkoušet, jestli znáte všech šest. Jde jen o ukázku toho, že v SQL jde často k řešení přistupovat různými způsoby. Všechny jsou správné. RANDOM() Kouzlo! RANDOM() SELECT * FROM fund ORDER BY random() LIMIT 1 GROUP BY Agregace Počet, průměr, součet… GROUP BY GROUP BY + agregace Agregační funkce Kouzlo! sloupec Číslo/řetězec Agregační funkce Ko KoKo Agregační funkce Ko KoKo Agregační funkce Ko KoKo GROUP BY color Příklady 1. Kolik bylo příspěvků z webu a kolik osobně? 2. Jaká je nejčastější výše příspěvku? 3. Kolik se vybralo v jednotlivých měsících? 1. SELECT zdroj, count(*) FROM fund GROUP BY zdroj 2. SELECT castka, count(*) FROM fund GROUP BY castka 3. SELECT strftime("%m", datum) AS mesic, SUM(castka) 
 FROM fund 
 GROUP BY strftime("%m", datum) WHERE + GROUP BY + agregace where BLUE or RED WHERE + GROUP BY + agregace GROUP BY color WHERE + GROUP BY + agregace Agregační funkce číslo číslo SELECT ... FROM ... WHERE .... GROUP BY ... ORDER BY ... LIMIT Příklady Jaká je nejčastější výše příspěvku z webu SELECT castka, count(*) FROM fund WHERE zdroj = "web" GROUP BY castka ORDER BY count(*) DESC Příklady Zkontrolujte “kvalitu” dat v tabulce test SELECT zdroj, count(*) FROM test GROUP BY zdroj …a další DB http://odtahy.jdem.cz/ Příklady 1. Zkontrolujte kvalitu dat. SELECT ulice, count(*) FROM odtahy 
 GROUP BY ulice ORDER BY ulice