Вибір груп за допомогою HAVING



Наступним виразом в операторі SELECT є вираз HAVING. GROUP BY з виразом HAVING подібний до SELECT з виразом WHERE. Наприклад:

SELECT COUNT(*), JOB

FROM EMPLOYEE

GROUP BY JOB

HAVING COUNT(*) = L;

Такий запит вибере всі наявні в компанії посади, на яких працює по одному службовцю. Результат виконання запиту буде наступним:

+--------------+------------------------------------+

|   count(*) | job                                  |

+--------------+------------------------------------+

|    1  | Адміністратор БД        |

|    1  | Системний адміністратор |

+--------------+------------------------------------+

2 rows in set (0.05 sec)

 

Сортування результатів пошуку за допомогою ORDER BY.Наступним виразом в операторі SELECT є вираз ORDER BY. Він дає можливість відсортувати рядки результату по одному або декількох стовпцях. Сортувати при цьому можна як по зростанню (позначається ASC), так і по спаданню (позначається DESC). Наприклад:

SELECT *

FROM EMPLOYEE

ORDER BY JOB ASC, NAME DESC;

У результаті будуть обрані усі рядки з таблиці employee і відсортовані за значенням job за абеткою. Якщо при цьому два або більше службовців будуть мати однакові посади, то відповідні рядки будуть відсортовані за іменем у зворотному порядку.

Дані, що виймаються до цього, завжди виводилися в тому порядку, у якому вони були збережені в таблиці. У дійсності SQL дозволяє сортувати витягнуті дані за допомогою виразу ORDER BY. Ця пропозиція вимагає ім'я стовпця, на основі якого будуть сортуватися дані. Давайте подивимося, як можна вивести імена співробітників з упорядкованими за алфавітом прізвищ співробітників (у зростаючому порядку).

SELECT l_name, f_name

from employee_data

ORDER BY l_name;

А от так співробітників можна відсортувати за віком.

SELECT f_name, l_name, age

from employee_data

ORDER BY age;

Вираз ORDER BY може сортувати в зростаючому порядку (ASCENDING або ASC) або в спадному порядку (DESCENDING або DESC) залежно від зазначеного аргументу.

Щоб вивести список співробітників в спадному порядку, можна використовувати такий оператор.

SELECT f_name

from employee_data

ORDER by f_name DESC;

Приклади завдань

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

2. Виведіть список співробітників в спадному порядку їхнього стажу роботи в компанії.

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

SELECT emp_id, l_name, title, age

from employee_data

ORDER BY title DESC, age ASC;

4. Вивести список співробітників (прізвище та ім'я), які обіймають посаду "програміст" або "розроблювач Web" і відсортувати їхні прізвища за алфавітом.

Можливі вирішення завдань

mysql> SELECT f_name, l_name, salary

-> from employee_data

-> ORDER BY salary;

 

mysql> SELECT f_name, l_name, yos

-> from employee_data

-> ORDER by yos;

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

mysql> SELECT emp_id, l_name, title, age

-> from employee_data ORDER BY

-> title DESC, age ASC;

Примітка: Спочатку сортуються посади в спадному порядку. Потім для кожної посади сортується вік співробітників у зростаючому порядку.

mysql> SELECT l_name, f_name from employee_data

-> where title IN ('програміст',

-> 'розроблювач Web') ORDER BY l_name;

 

Питання вхідного контролю

 

1 Які ви знаєте засоби групування результатів?

2 Які ви знаєте засоби сортування результатів?

3 Які ви знаєте функції групування (агрегуючі функції)?

4 В чому полягає необхідність сортування результатів?

5 Яке призначення має вираз HAVING у SELECT запиті?

6 Які функції називаються агрегатними? Перелічіть їх?

7 Яке призначення функції AVG?

8 В якій фразі формуємо стовпець, що обчислюється?

9 Як знаходиться кількість записів в таблиці?

 

Постановка завдання

Створити базу даних Успішність з чотирьох таблиць: Група, Студенти, Дисципліни, Оцінки

 

Створити таблицю Група з вказаними властивостями полів.

 

Кодгрупи НаваГрупи ЧислоСтудентів Куратор
Числовий Текстовий, 5 Числовий Текстовий, 30

 

Створити таблицю Студенти з вказаними властивостями полів.

 

КодСтудента Прізвище Імя ДатаНар
Числовий Текстовий, 15 Текстовий, 10 Дата/час

 

Створити таблицю Дисципліна з вказаними властивостями полів.

 

КодДисципліни НазваДисципліни ПрізВикладача ІмяПобатькові
Числовий Текстовий, 10 Текстовий, 15 Текстовий, 20

 

Створити таблицю Оцінка з вказаними властивостями полів.

ПорядНомер КодГрупи КодСтудента КодДисципліни Оцінка
Числовий Числовий Числовий Числовий Числовий

 

Заповнити по 4-5 записів кожної таблиці, переглянути заповнені таблиці


Дата добавления: 2018-05-13; просмотров: 191; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!