“Databázové systémy” Hodina č. 4 Osnova • Doplnění “date” a “string” funkcí • SQL jako • Export/Import • Agregační funkce DB pro dnešní den http://fund2013.jdem.cz/ Rozcvička! Kolik lidí přispělo skrze web 1000 nebo 100 korun? Řešení: SELECT * FROM fund WHERE zdroj = “web” AND (castka = 1000 OR cast = 100) nebo (třeba) SELECT * FROM fund WHERE zdroj = “web” AND castka IN (100, 1000) Funkce f(x) = (x-10)2 - 8 Funkce Kouzlo! 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! Čí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? Řešení: SELECT AVG(castka) AS Prumer 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! Řešení: SELECT MIN(castka), MAX(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, ...) “Date” funkce strftime() strftime(format, timestring, modifier, modifier, ...) Jak vybrat květnové příspěvky? 5,5 způsobů 1. Tzv. varianta “hodně na sílu” jak vybrat květnové příspěvky SELECT * FROM fund WHERE datum = “2013-05-01” OR datum = “2013-05-02”… …prosím tohle nedělejte (ač výsledek bude správný) 5,5 způsobů 1. Bez znalosti date/string funkcí A. 2x pomocí nerovností jak vybrat květnové příspěvky SELECT * FROM fund WHERE datum >= “2013-05-01” AND datum <= “2013-05-31” musíte však vědět, kolik dní má květen.. 5,5 způsobů 1. Bez znalosti date/string funkcí A. 2x pomocí nerovností (jiná varianta) jak vybrat květnové příspěvky SELECT * FROM fund WHERE datum BETWEEN “2013-05-01” AND “2013-05-31” musíte však vědět, kolik dní má květen.. 5,5 způsobů 1. Bez znalosti date/string funkcí A. 2x pomocí nerovností jak vybrat květnové příspěvky SELECT * FROM fund WHERE datum >= “2013-05-01” AND datum < “2013-06-01” u druhého data už není “<=“, ale jen “<“, díky tomu můžeme použít první den následujícího měsíce a neřešit kolik dní má květen 5,5 způsobů 1. Bez znalosti date/string funkcí A. Bez nich! jak vybrat květnové příspěvky SELECT * FROM fund WHERE datum LIKE “2013-05-%” 5,5 způsobů 1. Pouze se znalostí “date” funkcí jak vybrat květnové příspěvky SELECT * FROM fund WHERE strftime(“%Y-%m”, datum) = “2013-05” 5,5 způsobů 1. Pouze se znalostí “string” funkcí jak vybrat květnové příspěvky SELECT * FROM fund WHERE SUBSTR(datum, 1, 7) = "2013-05" RANDOM() Kouzlo! RANDOM() Proč? SELECT * FROM fund ORDER BY RANDOM() LIMIT 5