/* Příklady práce s SQL */ /* Vytvoření tabulek pro příklady (ve shcéma tmp, protože tyto příklady nijak nesouvisí s DWH). Následné dotazování nad tabulkami. */ CREATE TABLE tmp.EMPLOYEE ( EMPLOYEE_ID int primary key, EMPLOYEE_FIRST_NAME varchar(255) not null, EMPLOYEE_LAST_NAME varchar(255) not null, EMPLOYEE_PHONE varchar(50), EMPLOYEE_EMAIL varchar(255) not null, JOB_ID int ); CREATE TABLE tmp.JOB ( JOB_ID int PRIMARY KEY, JOB_NAME varchar(255), DEPARTMENT varchar(255) not null ); /* Naplnění daty */ INSERT INTO tmp.EMPLOYEE (EMPLOYEE_ID, EMPLOYEE_FIRST_NAME, EMPLOYEE_LAST_NAME, EMPLOYEE_PHONE, EMPLOYEE_EMAIL, JOB_ID) VALUES (1, 'John', 'Doe', '1234567890', 'john.doe@example.com', 1), (2, 'Jane', 'Smith', '987654321', 'jane.smith@example.com', 2), (3, 'Michael', 'Johnson', '555123567', 'michael.johnson@example.com', 1), (4, 'Emily', 'Williams', '111222333', 'emily.williams@example.com', 3), (5, 'Daniel', 'Brown', '444555666', 'daniel.brown@example.com', 4); INSERT INTO tmp.JOB (JOB_ID, JOB_NAME, DEPARTMENT) VALUES (1, 'Software Developer', 'IT'), (2, 'Marketing Specialist', 'Marketing'), (3, 'Sales Representative', 'Sales'), (4, 'Financial Analyst', 'Finance'), (5, 'HR Coordinator', 'Human Resources'); /* Zobrazení dat v tabulkách */ SELECT * FROM tmp.EMPLOYEE SELECT * FROM tmp.JOB /* Příklady */ /* Potřebuji seznam zaměstnanců seřazené dle příjmení */ SELECT emp.EMPLOYEE_ID, emp.EMPLOYEE_FIRST_NAME, emp.EMPLOYEE_LAST_NAME, emp.EMPLOYEE_EMAIL FROM tmp.EMPLOYEE emp ORDER BY emp.EMPLOYEE_LAST_NAME ASC /* Zjisti název pozice, kterou má zaměstnanec 4 */ SELECT job.JOB_NAME FROM tmp.EMPLOYEE emp JOIN tmp.JOB job ON job.JOB_ID = emp.JOB_ID WHERE emp.EMPLOYEE_ID = 4 /* Potřebuji seznam neobsazených pozic */ SELECT job.DEPARTMENT, job.JOB_NAME FROM tmp.JOB job LEFT JOIN tmp.EMPLOYEE emp ON emp.JOB_ID = job.JOB_ID WHERE emp.EMPLOYEE_ID IS NULL ORDER BY job.DEPARTMENT /* Potřebuji počty pracovníků v jednotlivých odděleních */ SELECT job.DEPARTMENT, job.JOB_NAME, count(1) as CNT_EMPLOYEE FROM tmp.JOB job JOIN tmp.EMPLOYEE emp ON emp.JOB_ID = job.JOB_ID GROUP BY job.DEPARTMENT, job.JOB_NAME ORDER BY job.DEPARTMENT