Úvod do SQL Hodina č. 5 LENGTH("ahoj") ahoj 4 "Kouzlo!" LENGTH(sloupecek) hodnota sloupecku délka "Kouzlo!" Agregační funkce Kouzlo! sloupec / * Číslo/řetězec COUNT(*) COUNT(sloupecek) COUNT(DISTINCT sloupecek) vrátí počet všech řádků:
 SELECT count(*) FROM books vrátí počet všech řádků, kde sloupeček publisher není NULL
 SELECT count(publisher) FROM books vrátí počet unikátních hodnot ve sloupečku publisher SELECT count(DISTINCT publisher) FROM books “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" 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, 1, 7) = "2013-05" RANDOM() Kouzlo! SELECT * FROM fund ORDER BY RANDOM() RANDOM() Jak náhodně seřadit řádky: SELECT * FROM fund ORDER BY RANDOM() 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 vybráno na 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, SUM(castka) FROM fund GROUP BY zdroj 2. SELECT castka, COUNT(*) FROM fund GROUP BY castka ORDER BY COUNT(*) DESC LIMIT 1 3. SELECT strftime("%m", datum), 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 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 LIMIT 1 …a další DB http://odtahy.jdem.cz/ Příklady 1. Zkontrolujte kvalitu dat. 2. Kdy se nejčastěji odtahuje? Měsíc/den/hodina SELECT ulice, COUNT(*) FROM odtahy GROUP BY ulice ORDER BY ulice SELECT strftime("%m", datum), COUNT(*) FROM odtahy GROUP BY strftime("%m", datum) SELECT strftime("%w", datum), COUNT(*) FROM odtahy GROUP BY strftime("%w", datum) 
 SELECT strftime("%H", cas), COUNT(*) FROM odtahy GROUP BY strftime("%H", cas)