Ú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 http://fund2016.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) Kouzlo! 10.123 Round(10.123) Kouzlo! 10.123 10 Round(10.123, 1) Kouzlo! 10.123 10.1 1 Round(10.123, 1) Kouzlo! 10.123 10.1 1 Agregační funkce AVG, MIN, MAX, COUNT, SUM 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 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, ...) “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 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? Příklady 1. SELECT zdroj, COUNT(*) FROM fund GROUP BY zdroj 2. SELECT castka, COUNT(*) as pocet FROM fund GROUP BY castka ORDER BY pocet DESC LIMIT 1 3. SELECT strftime(“%m”, datum) as mesic, SUM(castka) FROM fund GROUP BY mesic WHERE + GROUP BY + agregace where BLUE or RED WHERE + GROUP BY + agregace GROUP BY color WHERE + GROUP BY + agregace Agregační funkce číslo číslo Příklady Jaká je nejčastější výše příspěvku z webu SELECT castka, COUNT(*) as pocet FROM fund WHERE zdroj = “web” GROUP BY castka ORDER BY pocet DESC LIMIT 1 Příklady Zkontrolujte “kvalitu” dat v tabulce test SELECT zdroj, COUNT(*) FROM test GROUP BY zdroj