Главная страница
Навигация по странице:

  • Що роблять запити 04-02-2, 04-02-3, 04-02-4 Групування даних SELECT select_list FROM table_source [WHERE search condition] GROUP BY

  • Агрегатні функції та групування даних Доцент кафедри пст поляков С. А


    Скачать 319.26 Kb.
    НазваниеАгрегатні функції та групування даних Доцент кафедри пст поляков С. А
    Дата29.09.2019
    Размер319.26 Kb.
    Формат файлаpdf
    Имя файлаSQL_04_2019_grouping.pdf
    ТипДокументы
    #88021

    SQL
    Агрегатні функції та групування даних
    Доцент кафедри ПСТ Поляков С.А.
    2019

    Агрегатні функції
    Скалярні функції отримують в якості параметрів скалярні значення і повертають скалярні значення
    Агрегатні функції отримують в якості параметрів сукупність (колекція) скалярних значень і повертають скалярні значення
    Аналогом в мовах програмування є функції, які отримують в якості параметрів масиви і повертають суму елементів, максимальне, або мінімальне значення.
    Приклад 4-01

    Основні агрегатні функціх
    Агрегатна функція
    Результат виконання
    AVG([ALL|DISTINCT] expression)
    Середнє значення всіх елементів, які не є NULL
    SUM([ALL|DISTINCT] expression)
    Сума всіх елементів, які не є NULL
    MIN([ALL|DISTINCT] expression)
    Мінімальне значення серед елементів, які не є NULL
    MAX([ALL|DISTINCT] expression)
    Максимальне значення серед всіх елементів, які не є NULL
    COUNT([ALL|DISTINCT] expression)
    Кількість всіх елементів, які не є
    NULL
    COUNT(*) кількість рядків

    Властивості агрегатних функцій
    - Для AVG та SUM вираз, який знаходиться в функції повинен повертати числове значення
    - Для MIN, MAX та COUNT можуть виконуватися на числах, датах або рядках
    - По умовчанню функції обчислюються на всіх значеннях, включаючи дублікати. (NULL не враховуються). Для виключення дублікатів треба використовувати ключове слово DISTINCT
    - Всі агрегатні функції, за винятком COUNT(*) ігнорують NULL
    - Не можна змішувати агрегатні та не агрегатні функції в одній фразі
    SELEC, за винятком запитів на групування

    Значення агрегатних функцій на пустих даних
    Агрегатна функція
    Результат виконання на пустих даних
    AVG([ALL|DISTINCT] expression)
    NULL
    SUM([ALL|DISTINCT] expression)
    NULL
    MIN([ALL|DISTINCT] expression)
    NULL
    MAX([ALL|DISTINCT] expression)
    NULL
    COUNT([ALL|DISTINCT] expression)
    0
    COUNT(*)
    0

    Приклади агрегатних функцій
    4-02-1: Обчислити кількість інвойсів створених після 1 січня 2014 року, середнє значення, та суму всіх інвойсів

    Що роблять запити 04-02-2, 04-02-3, 04-02-4 ?

    Групування даних
    SELECT select_list
    FROM table_source
    [WHERE search condition]
    GROUP BY group_by_list
    [ORDER BY order_by_list]
    Приклад 04-03

    Приклади групування
    Приклад 04-04-1
    Приклад 04-04-2

    Фільтрація груп
    SELECT select_list
    FROM table_source
    [WHERE search condition]
    [GROUP BY group_by_list]
    HAVING search_condition
    [ORDER BY order_by_list]
    Приклади 04-04-3, 04-04-4

    Властивості групування
    - GROUP BY групує рядки, вказуючи назви колонок, або скалярні вирази на колонках
    - Агрегатні функції розраховуються окремо для кожної групи
    - Якщо фраза GROUP BY містить дві, або більше умови групування, то спочатку виконується групування по першій умові, потім на кожній групі виконується групування по другій умові і т.д.
    - NULL утворює окрему групу
    - За умовчанням GROUP BY впорядковує колонки за зростанням значень групування. Для того, щоб уникнути сортування треба додати
    ORDER BY NULL. Це може прискорити запит
    -

    Чим відрізняється HAVING від WHERE
    - WHERE виконується на рядках таблиці
    - HAVING виконується на групах
    - Спочатку виконується WHERE, потім рядки групуються, потім виконується HAVING
    - WHERE може посилатися на будь яку колонку, HAVING може посилатися тільки на колонки які є в фразі SELECT
    - WHERE не може мати агрегатні функції, може використовувати агрегатні функції
    Див. приклад 04-05

    Використання складних умов
    Приклад 04-06

    Оператор ROLLUP
    SELECT select_list
    FROM table_source
    [WHERE search condition]
    [GROUP BY group_by_list]
    HAVING search_condition WITH ROLLUP
    [ORDER BY order_by_list]
    -
    Приклад 04-07

    Властивості ROLLUP
    - використовується для розрахунку підсумків
    - до кожної групи додає підсумки по всім колонкам, по яким виконується групування
    Наприклад, якщо групуванні виконується по колонкам A, B, C то будуть обчислені підсумки по A, B, тільки по A, та загальний підсумок по всім групам


    написать администратору сайта