Funkce v SQL Řešení cvičení Cvičení I 1. Vypište, kolik osob se narodilo sedmý den v měsíci. • select count(*) as pocet from rc where substr(r,5,2)='07'; 2. Vypište ta rodná čísla, která nejsou validní. • select r from rc where cast(replace(r,'/','') as integer) % 11 != 0; 3. Vypište hodnoty písmen ze sloupců A a B v abecedním pořadí jako spojený řetězec. • select concat(least(A,B), greatest(A,B)) from rc; 4. Ke každému rodnému číslu dekódujte pohlaví – vypište 0 pro muže a 1 pro ženy. • select r, cast(substr(r,3,2) AS integer) DIV 50 as pohlavi from rc; Cvičení I – bonus • Vypište hodnoty písmen ze sloupců A, B a C v abecedním pořadí jako spojený řetězec. • select A, B, C, concat(least(A,B,C), least(least(greatest(A,B), greatest(B,C)), least(greatest(A,C), greatest(B,C))), greatest(A,B,C)) as ABC from rc; Cvičení II 1. Do sloupce dn vložte datum narození ve tvaru 'YYYYMMDD'. update rc set dn=concat('19', substr(r,1,2), lpad(cast(cast(substr (r,3,2) as integer) % 50 as char), 2, '0'), substr(r,5,2)); 2. Vypočítejte aktuální věk osob z jejich rodných čísel. select r, period_diff(concat(substr(cast(curdate() as char),1,4), substr(cast(curdate() as char),6,2)), substr(dn,1,6)) div 12 as let, period_diff(concat(substr(cast(curdate() as char),1,4), substr(cast( curdate() as char),6,2)), substr(dn,1,6)) % 12 as mesicu from rc; 3. Naformátujte datum narození ve tvaru „5. září 2005“. select date_format(str_to_date(dn, '%Y%m%d'), '%e. %M %Y') from rc; 4. Ke každé osobě vypište název dne narození a letošních narozenin. select dayname(str_to_date(dn, '%Y%m%d')) from rc; Cvičení III 1. Ke každému rodnému číslu vypište pohlaví – 'muž' nebo 'žena'. select r, if(cast(substr(r,3,2) AS integer) DIV 50=0, 'muž', 'žena') as pohlavi from rc;