Вибір груп за допомогою 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!