Файл: Лабораторна робота8.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 01.10.2024

Просмотров: 11

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лабораторна робота 8

Тема: Команди обробки даних.

Мета: розглянути способи пошуку максимального, мінімального і середнього значень, команди знаходження суми і кількості записів, команди угрупування і сортування даних в таблицях.

Теоретична частина

Пошук мінімального і максимального значень

В MySQL є вбудовані функції для обчислення мінімального і максимального значень.

SQL має 5 агрегатних функцій.

MIN(): мінімальне значення;

MAX(): максимальне значення;

SUM(): сума значень;

AVG(): середнє значень;

COUNT(): підраховує число записів.

На цій роботі ми розглянемо пошук мінімального і максимального значень стовпця.

Мінімальне значення

select MIN(salary) from employee_data;

На мал. 8.1. приведений результат запиту.

Мал. 8.1. Пошук мінімальної зарплати

Максимальне значення

select MAX(salary) from employee_data;

На мал. 8.2. приведений результат запиту.

Мал. 8.2. Пошук максимальної зарплати

Завдання

Знайдіть мінімальні надбавки.

Знайдіть максимальну зарплату серед всіх "програмістів".

Знайдіть вік найстарішого "продавця".

Знайдіть ім'я і прізвище найстарішого співробітника.

Пошук середнього значення і суми

Підсумовування значень стовпця за допомогою функції SUM

Агрегатна функція SUM() обчислює загальну суму значень в стовпці. Для цього необхідно задати ім'я стовпця, яке повинне бути поміщено усередині дужок.

Давайте подивимося, скільки компанія BigFoot витрачає на зарплату своїх співробітників.

select SUM(salary) from employee_data;

На мал. 8.3. приведений результат запиту.

Мал. 8.3. Сума всіх зарплат

Аналогічно можна вивести загальну суму надбавок, видаваних співробітникам.

select SUM(реrks) from employee_data;

На мал. 8.4. приведений результат запиту.


Мал. 8.4. Сума всіх надбавок

Можна знайти також загальну суму зарплати і надбавок.

select sum(salary)+ sum(реrks) from employee_data;

На мал. 8.5. приведений результат запиту.

Мал. 8.5. Загальна сума зарплати і надбавок

Тут показані також додаткові можливості команди SELECT. Значення можна складати, віднімати, умножати або ділити. Насправді можна записувати повноцінні арифметичні вирази.

Обчислення середнього значення

Агрегатна функція AVG() використовується для обчислення середнього значення даних в стовпці.

select avg(age) from employee_data;

На мал. 7.10. приведений результат запиту.

Мал. 8.6. Середній вік співробітників

Приклад вище обчислює середній вік співробітників компанії BigFoot, а наступний виводить середню зарплату.

select avg(salary) from employee_data;

На мал. 8.7. приведений результат запиту.

Мал. 8.7. Середня зарплата співробітників

Завдання

Вивести суму всіх віків співробітників, що працюють в компанії BigFoot.

Як обчислити загальну кількість років стажу роботи співробітників в компанії BigFoot?

Обчисліть суму зарплат і середній вік співробітників, які посідають посаду "програміст".

Що робить наступний оператор?

select (SUM(реrks)/SUM(salary)* 100)

from employee_data;

Імена стовпців

MySQL дозволяє задавати імена для стовпців, що виводяться. Тому замість f_name або l_name і т.д. можна використовувати більш зрозумілі і наочні терміни. Це робиться за допомогою оператора AS.

select avg(salary) AS

'Средняя зарплата' from

employee_data;

На мал. 8.8. приведений результат запиту.

Мал. 8.8. Виведення середньої зарплати з використанням псевдо-імен стовпців.

Такі псевдо-імена можуть зробити висновок більш зрозумілим для користувачів. Важливо тільки пам'ятати, що при завданні псевдо-імен з пропусками необхідно брати такі імена в лапки. Ще чого один приклад:

select (SUM(реrks)/SUM(salary)* 100)


AS 'Процент надбавок' from

employee_data;

На мал. 8.9. приведений результат запиту.

Мал. 8.9. Виведення відсотка зарплати, яку співробітники одержують як надбавки з використанням псевдо-імен

Підрахунок числа записів

Агрегатна функція COUNT() підраховує і виводить загальне число записів. Наприклад, щоб підрахувати загальне число записів в таблиці, виконайте наступну команду.

select COUNT(*) from employee_data;

На мал. 8.18. приведений результат запиту.

Мал. 8.10. Загальна кількість записів

Як ми вже знаємо, знак * означає "всі дані".

Тепер давайте підрахуємо загальне число співробітників, які посідають посаду "програміст".

select COUNT(*) from employee_data

where title = 'программист';

На мал. 8.11. приведений результат запиту.

Мал. 8.11. Загальна кількість співробітників-програмістів

Групування даних

Пропозиція GROUP дозволяє групувати аналогічні дані. Тому, щоб вивести всі унікальні посади в таблиці, можна виконати команду

select title from employee_data

GROUP title;

На мал. 8.12. приведений результат запиту.

Мал. 8.12. Всі унікальні посади співробітників

Можна бачити, що це аналогічно використовуванню DISTINCT в попередній лекції.

От як можна підрахувати число співробітників мають певну посаду.

select title, count(*)

from employee_data GROUP title;

На мал. 8.13. приведений результат запиту.

Мал. 8.13. Кількість співробітників по посадах

В попередній команді MySQL спочатку створює групи різних посад, а потім виконує підрахунок в кожній групі.

Сортування даних

Тепер давайте знайдемо і виведемо число співробітників, що мають різні посади, і відсортуємо їх за допомогою ORDER.

select title, count(*) AS Number

from employee_data

GROUP title

ORDER Number;

На мал. 8.14. приведений результат запиту.


Мал. 8.14. Кількість співробітників по посадах з сортуванням

Завдання

Підрахуйте число співробітників, які пропрацювали в BigFoot більше трьох років.

Підрахуйте кількість співробітників в групах одного віку.

Змініть попереднє завдання так, щоб вік виводився в убуваючому порядку.

Знайдіть середній вік співробітників в різних підрозділах (посадах).

Змініть попередній оператор так, щоб дані виводилися в убуваючому порядку середнього віку.

Примітка: Нам потрібно задати псевдо-ім’я для стовпця, що містить середнє значення віку, щоб його можна було сортувати.

Контрольні питання

  1. Що таке, у вашому розумінні, агрегатні функції?

  2. Перерахуйте відому вам агрегатні функції та поясніть призначення кожної з них.

  3. Опишіть формальний синтаксис і механізми роботи кожної з названих вами функцій.

  4. До яких з наявних типів даних можна застосовувати кожну з функцій? Чому?

  5. До яких з наявних типів даних не можна застосовувати кожну з функцій? Чому?

  6. Яким чином можна змінити ім’я стовбцю в результаті виконання запиту? Наведіть відповідний приклад.

  7. В чому полягає призначення псевдо-імен?

  8. Яким чином можна виконати групування даних?

  9. З якою метою це робиться?

  10. Яким чином та за якою ознакою можна виконати сортування даних?

  11. Наведіть відповідні приклади синтаксису.