Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОБД / лабки / Звіт_ЛР12_Бойко(1)

.doc
Скачиваний:
0
Добавлен:
27.01.2024
Размер:
419.84 Кб
Скачать

Бойко Єагеній 310-і

Лабораторна робота 12

Тема: Закріплення навичок розроблення виконання простих запитів до БД з використанням оператора SELECT.

Мета: Закріпити навички розроблення виконання простих запитів до БД з використанням оператора SELECT.

Форма звіту: електронний звіт.

ЗАВДАННЯ

Виконати завдання на закріплення знань виконання запитів з таблиць учбової бази даних (college_2) згідно списку завдань. Результати подати у вигляді синтаксису запиту та скрін-шоту результату виконання запиту з екрану.

БЛОК 1. Вибірка окремих полів із таблиць

    1. побудувати запит для отримання даних про ім’я та прізвища всіх співробітників компанії

SELECT first_name, second_name from employee

    1. побудувати запит для отримання даних про ім’я та країну всіх клієнтів компанії

SELECT client_name, country from client

    1. побудувати запит для отримання даних про посади та структурні підрозділи компанії

SELECT position.position_name, structure.structure_name from position, structure where position.structure_id = structure.structure_id

    1. побудувати запит для отримання даних про назви всіх проектів та імена клієнтів

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

9