- •Міністерство освіти і науки, молоді та спорту україни одеський державний екологічний університет методичні вказівки
- •І. Загальна частина
- •Іі. Організація самостійної роботи студента
- •2.1 Рекомендації студенту по роботі над курсом “Організація баз даних та знань”
- •Загальні поради
- •Повчання по послідовному вивченню теоретичного матеріалу
- •Параметри
- •Параметри
- •Тип значення, що повертається
- •10. Розподілені бази даних
- •11. Системи керування базами знань
- •2.1.3 Перелік запитань для самоперевірки
- •Перелік завдань на контрольну роботу
- •Загальні поради по виконанню контрольної роботи
- •Виконання контрольної роботи
- •2.2.3 Розв’язання типових завдань Завдання 1 Створення бази даних
- •Завдання 4 Використання вкладених запитів
- •Завдання 5 Запити з групуванням
- •Завдання 6 Маніпулювання даними командами delete-sql та update-sql
- •2.2.4 Завдання до контрольної роботи Завдання 1 Створення бази даних
- •Завдання 2 Прості запити до бази даних
- •Завдання 3 Запити з використанням полів, що обчислюються
- •Завдання 4 Використання вкладених запитів
- •Завдання 5 Запити з групуванням
- •Завдання 6 Маніпулювання даними командами delete-sql та update-sql
- •Виконання запитів по варіантах завдань
- •3.1 Система контролю знань та вмінь студентів
- •3.2 Форми контролю знань та вмінь студентів
- •Методичні вказівки
Завдання 4 Використання вкладених запитів
Для жінок, які не працюють за сумісництвом (не входять в множину працівників-сумісників), вибрати: прізвище з ініціалами, кількість дітей, освіту, відділ, зарплату (зарплата розраховується за формулою money*Stavka).
SELECT RTRIM(Surname)+' '+LEFT(Name1,1)+'.'+LEFT(Name2,1)+'.';
as Фамилия_ИO, children as Дети, education as Образование,;
Name_otdel Отдел, money*Stavka as Зарплата;
FROM Persona p, Worker w , Post, otdel ;
WHERE p.id_man=w.id_man AND w.id_post=Post.id_post AND ;
Otdel.id_otdel=w.id_otdel AND sex=’ж’ AND w.id_man NOT IN;
(SELECT id_man FROM Worker WHERE NOT main_work)
Результат виконання команди видно на рисунку 39.
Рисунок 39 – Результат команди SELECT
Завдання 5 Запити з групуванням
Для кожного відділу розрахувати кількість чоловіків та кількість жінок. Вибрати: назву відділу, стать, кількість осіб цієї статі в цьому відділі.
SELECT Name_otdel as Отдел, sex as Пол, count(*) Количество;
FROM Persona p, Worker w , otdel ;
WHERE p.id_man=w.id_man AND Otdel.id_otdel=w.id_otdel;
GROUP BY Name_otdel, sex
В цьому запиті є два рівня групування: за статтю та за відділом. Якщо поміняти місцями атрибути в розділі GROUP BY (побто написати GROUP BY sex, Name_otdel), то розрахунки залишаться тими самими, але зміниться порядок виводу записів в результаті запиту: або для кожного відділу вмводиться спочатку кількість жінок, потім – кількість чоловіків; або спочатку виводиться кількість жінок для кожного відділу, а потім – кількість чоловіків для кожного відділу). Спробуйте виконати цей запит з обома порядками групування та отримайте результат.
Для кожного відділу вибрати: назву відділу, кількість працюючих робітників, середній вік працівників, мінімальну зарплатню з урахуванням ставки працівника. Включаються відділи, де є працівники з дітьми.
SELECT Name_otdel as Отдел, count(*) Количество_сотрудников,;
AVG(YEAR(DATE())-YEAR(birthday)) as Средний_Возраст,;
MIN(money*Stavka) as MIN_Зарплата;
FROM Persona p, Worker w , Post, otdel ;
WHERE p.id_man=w.id_man AND w.id_post=Post.id_post AND ;
Otdel.id_otdel=w.id_otdel AND w.id_otdel IN;
(SELECT id_otdel FROM Persona p, Worker w ;
WHERE p.id_man=w.id_man AND children>0);
GROUP BY Name_otdel
Результат виконання команди видно на рисунку 40.
Рисунок 40 – Результат команди SELECT
Завдання 6 Маніпулювання даними командами delete-sql та update-sql
1. Для працівників відділів «Адміністрація» та «Бухгалтерія», що працюють по основній роботі не на повну ставку і мають оклад менше 2000 встановити повну ставку.
UPDATE Worker SET stavka=1;
WHERE main_work and id_otdel IN ;
(SELECT id_otdel FROM Otdel WHERE Name_otdel=’ Администрация’ OR;
Name_otdel=’ Бухгалтерия’) AND id_post IN
(SELECT id_post FROM Post WHERE money<2000)
2. Звільнити (видалити з таблиці Worker) сумісників, які старші за 60 років та працюють на посадах з окладом більше 5000.
DELETE Worker;
WHERE NOT main_work and id_man IN ;
(SELECT id_man FROM Persona WHERE YEAR(DATE())-YEAR(birthday)>60); AND id_post IN (SELECT id_post FROM Post WHERE money>5000)
