Бойко Євгеній 310-і
Лабораторна робота 12
Тема: Закріплення навичок розроблення виконання простих запитів до БД з використанням оператора SELECT.
Мета: Закріпити навички розроблення виконання простих запитів до БД з використанням оператора SELECT.
Форма звіту: електронний звіт.
ЗАВДАННЯ
Виконати завдання на закріплення знань виконання запитів з таблиць учбової бази даних (college_2) згідно списку завдань. Результати подати у вигляді синтаксису запиту та скрін-шоту результату виконання запиту з екрану.
БЛОК 1. Вибірка окремих полів із таблиць
побудувати запит для отримання даних про ім’я та прізвища всіх співробітників компанії
SELECT first_name, second_name from employee
побудувати запит для отримання даних про ім’я та країну всіх клієнтів компанії
SELECT client_name, country from client
побудувати запит для отримання даних про посади та структурні підрозділи компанії
SELECT position.position_name, structure.structure_name from position, structure where position.structure_id = structure.structure_id
побудувати запит для отримання даних про назви всіх проектів та імена клієнтів
SELECT project.project_title, client.client_name from project, client where client.client_id = project.client_id
БЛОК 2. Вибірка з перейменуваннями полів
2.1 побудувати запит для отримання даних про назви проектів під ім’ям «Проект» та назви документації під ім’ям «Документація проекту»
SELECT project.project_title as 'Проект', documents.title as 'Документація проекту' from project, documents where project.project_id = documents.project_id
2.2 побудувати запит для отримання даних про прізвища та імена всіх співробітників під ім’ям «Прізвище» та «Ім’я» і графік їх роботи під ім’ям «Графік роботи»
SELECT employee.first_name as 'Ім"я' , employee.second_name as 'Прізвище', schedule.schedule_name as 'Графік роботи' from employee, schedule where employee.schedule_id = schedule.schedule_id
БЛОК 3. Використання агрегатних функцій в SELECT
3.1 побудувати запит для отримання даних про ім’я та прізвища та вік найстаршого співробітника компанії
SELECT first_name, second_name, min(bdate) as bdate from employee
3.2 побудувати запит для отримання даних про рівень мінімальної заробітної плати в компанії
SELECT position_name, min(salary) as salary from position
3.3 побудувати запит для отримання даних про кількість клієнтів компанії
SELECT COUNT(client_name) as 'Кількість клієнтів компанії' from client
3.4 побудувати запит для отримання даних про кількість структурних підрозділів в компанії
SELECT COUNT(structure_name) as 'Кількість структурних підрозділів в компанії' from structure
3.5 побудувати запит для отримання даних про середню заробітну платню в компанії з урахуванням бонусу (зарплата помножена на бонус)
SELECT avg(position.salary)*avg(employee.coef_bonus) as 'Середня заробітна плата в компанії' from position, employee WHERE position.position_id = employee.position_id
БЛОК 4. Вибірка без дублювання даних
4.1 побудувати запит для отримання даних про прізвища співробітників, задіяних хоча б в одному проекті
SELECT DISTINCT employee.second_name as 'Прізвище' from employee, employee_task, project_task where employee.employee_id = employee_task.employee_id and project_task.project_task_id = employee_task.project_task_id
4.2 побудувати запит для отримання даних про співробітників, задіяних хоча б раз в тестуванні продукту
SELECT DISTINCT employee.second_name as 'Прізвище' from employee, employee_task, project_task, tasks where employee.employee_id = employee_task.employee_id and project_task.project_task_id = employee_task.project_task_id and tasks.task_id = project_task.task_id and tasks.task_id=6
4.3 побудувати запит для отримання даних про графіки роботи, за якими працює хоча б один співробітник
SELECT DISTINCT employee.first_name, employee.second_name, schedule.schedule_name, schedule.hours from employee, schedule where employee.schedule_id = schedule.schedule_id
БЛОК 5. Обмеження вибірки в розділі WHERE
5.1 побудувати запит для отримання даних про перелік співробітників, які отримують заробітну плату з урахуванням бонусу, менше 7000 грн
SELECT employee.first_name, employee.second_name, (position.salary*employee.coef_bonus) as salary from employee, position WHERE employee.position_id = position.position_id and (position.salary*employee.coef_bonus)<7000
5.2 побудувати запит для отримання даних про клієнтів, для яких проекти були пов'язані з розробкою web-додатків
SELECT client.client_name from client, project where client.client_id = project.client_id and project.project_type = 'web app'
5.3 побудувати запит для отримання даних про графіки роботи, при яких співробітник заробляє з урахуванням бонусу менше 4500 грн
SELECT DISTINCT schedule.schedule_name, schedule.hours from schedule, employee, position where schedule.schedule_id = employee.schedule_id and (position.salary*employee.coef_bonus)<4500
БЛОК 6. Упорядкування результатів запиту
6.1 побудувати запит для отримання даних про ім'я та прізвища всіх співробітників компанії, відсортованих в алфавітному порядку за посадою, яку вони займають
SELECT employee.first_name, employee.second_name from employee, position where employee.position_id = position.position_id order by position.position_name asc
6.2 побудувати запит для отримання даних про назву проектів, імені та країні всіх клієнтів компанії, відсортованих в алфавітному порядку по країні клієнта
SELECT project.project_title, client.country, client.client_name from project, client where client.client_id = project.client_id ORDER by client.country asc
6.3 побудувати запит для отримання даних про посади і структурних підрозділах компанії, відсортованих по структурному підрозділу в зворотному порядку
SELECT structure.structure_name, position.position_name from structure, position where structure.structure_id = position.structure_id order by structure.structure_name DESC
6.4 побудувати запит для отримання даних про прізвища, посади та графіку роботи співробітників, відсортованих по збільшенню заробітної плати з урахуванням бонусу
SELECT employee.second_name, position.position_name, schedule.schedule_name from schedule, employee, position where employee.position_id = position.position_id and schedule.schedule_id = employee.schedule_id order by (position.salary*employee.coef_bonus) asc