Теоретичні відомості
Агрегуючі функції дозволяють одержувати з таблиці зведену (агреговану) інформацію, виконуючи операції над групою рядків таблиці. Для завдання в SELECT-запиті агрегуючих операцій використовуються наступні ключові слова: · COUNT визначає кількість рядків або значень поля, обраних за допомогою запиту, що не є NULL-значеннями; · SUM обчислює арифметичну суму всіх обраних значень даного поля; · AVG обчислює середнє значення для всіх обраних значень даного поля; · МАХ обчислює найбільше із всіх обраних значень даного поля; · MIN обчислює найменше із всіх обраних значень даного поля.
В SELECT-запиті агрегуючі функції використовуються аналогічно іменам полів, при цьому останні (імена полів) використовуються як аргументи цих функцій. Функція AVG призначена для підрахунку середнього значення поля на множині записів таблиці.
Приклад 1. Для визначення середнього значення поля MARK (оцінки) по всіх записах таблиці EXAM_MARKS можна використати запит з функцією AVG наступного виду: SELЕCT AVERAGE (MARK) FROM EXAM_MARKS; Приклад 2. Для підрахунку загальної кількості рядків у таблиці варто використовувати функцію COUNT із зірочкою: SELECT COUNT(*) FROM EXAM_MARKS;
Аргументи DISTINCT і ALL дозволяють, відповідно, виключати й включати дублікати оброблюваних функцією COUNT значень, при цьому необхідно враховувати, що при використанні опції ALL значення NULL однаково не увійдуть до числа підраховуваних значень: SELECT COUNT (DISTINCT SUBJ_ID) FROM SUBJECT;
Пропозиція GROUP BY (групувати по) дозволяє групувати записи в підмножини, обумовлені значеннями якого-небудь поля, і застосовувати агрегуючі функції вже не до всіх записів таблиці, а роздільно до кожної сформованої групи. Приклад 3. Потрібно знайти максимальне значення оцінки, отриманої кожним студентом. Запит буде виглядати таким чином:
SELECT STUDENT_ID, MAX(MARK) FROM EXAM_MARKS GROUP BY STUDENT_ID;
Вибрані з таблиці EXAM_MARKS записи групуються за значеннями поля STUDENT_ID, зазначеного в конструкції GROUP BY, і для кожної групи знаходиться максимальне значення поля MARK. Конструкція GROUP BY дозволяє застосовувати агрегуючі функції до кожної групи, обумовленої загальним значенням поля (або полів), зазначених у цьому виразі. У наведеному запиті розглядаються групи записів, згруповані по ідентифікаторах студентів. У конструкції GROUP BY для групування може бути використане більше одного стовпця. Приклад 4.: Згрупувати дані. SELECT STUDENT_ID, SUBJ_ID, MAX (MARK) FROM EXAM_MARKS GROUP BY STUDENT_ID, SUBJ_ID; У цьому випадку рядки спочатку групуються за значеннями першого стовпця, а усередині цих груп — у підгрупи за значеннями другого стовпця. Таким чином, GROUP BY не тільки встановлює стовпці, по яких здійснюється групування, але й вказує порядок розбивки стовпців на групи. Варто мати на увазі, що в конструкції GROUP BY повинні бути зазначені всі обрані стовпці, наведені після ключового слова SELECT, крім стовпців, зазначених як аргумент в агрегуючій функції. При необхідності частина сформованих за допомогою GROUP BY груп може бути виключена за допомогою конструкції HAVING. Конструкція HAVING визначає критерій, по якому групи варто включати у вихідні дані, за аналогією із конструкцією WHERE, що здійснює це для окремих рядків.
Приклад 5. Використання конструкціїHAVING: SELECT SUBJ_NAME, MAX (HOUR) FROMSUBJECT GROUP BY SUBJ_NAME HAVING MAX (HOUR) >= 72;
В умові, що задається конструкцією HAVING, вказують тільки поля або вирази, які на виході мають єдине значення для кожної виведеної групи.
Завдання для самостійної роботи 1. Створити запит для підрахунку кількості студентів, що здавали екзамен із предмета навчання з ідентифікатором, рівним 20. 2. Створити запит, що дозволяє підрахувати в таблиці EXAM_MARKS кількість різних предметів навчання.
3. Створити запит, що виконує вибірку для кожного студента значення його ідентифікатора й мінімальної з отриманих їм оцінок. 4. Створити запит, що здійснює вибірку для кожного студента значення його ідентифікатора й максимальної з отриманих їм оцінок. 5. Створити запит, що виконує вивід прізвища першого за абеткою (на прізвище) студента, прізвище якого починається на букву «І». 6. Створити запит, що виконує вивід (для кожного предмета навчання) найменування предмета й максимального значення номера семестру, у якому цей предмет викладається. 7. Створити запит, що виконує вивід даних для кожного конкретного дня здачі іспиту про кількість студентів, що здавали іспит у цей день. 8. Створити запит для одержання середнього бала для кожного курсу по кожному предмету. 9. Створити запит для одержання середнього бала для кожного студента. 10. Створити запит для одержання середнього бала для кожного іспиту. 11. Створити запит для визначення кількості студентів, що здавали кожний іспит. 12. Створити запит для визначення кількості предметів, що вивчаються на кожному курсі.
3 .6. Лабораторна робота №6
Читайте также: Cтислі теоретичні відомості Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|