1. Skip to Menu
  2. Skip to Content
  3. Skip to Footer

Лекція 4 - SQL, Select: агрегатні та групові функції

Підрахунок кількості стрічок - COUNT
Групування в підмножини - GROUP BY
Відбір підмножин - HAVING

Агрегатні функції виконують операції над групами стрічок, зокрема: • COUNT визначає кількість стрічок або значень вказаного, що не є NULL-значеннями; • SUM – обчислює суму вибраних значень заданого поля; • AVG - обчислює середнє значення вибраних значень заданого поля; • MAX - обчислює найбільше значення вибраних значень заданого поля; • MIN - обчислює найменше значення вибраних значень заданого поля . В SELECT-запитах агрегатні функції використовуються як імена полів, а саме ім’я поля використовується як аргумент.

Підрахунок кількості стрічок - COUNT

Для підрахунку загальної кількості стрічок в таблиці використовують функцію COUNT із зірочкою

SELECT COUNT(*) 
    FROM exam_marks;

Аргумент DISTINCT дозволяє виключати дублікати із значень, які обробляються функцією COUNT

SELECT COUNT(DISTINCT subj_id) 
  FROM subject;

Групування в підмножини - GROUP BY

Оператор GROUP BY (групувати) дозволяє групувати записи в підмножини, які визнаються однаковими значеннями якого-небудь поля.
Нехай потрібно знайти максимальне значення оцінки, отриманої кожним студентом:

SELECT student_id, MAX(mark) 
  FROM exam_marks 
  GROUP BY student_id;

Параметр, по якому здійснюється групування, необхідно вказати в вивідному списку для ідентифікації агрегованих значень групи.
В конструкції GROUP BY для групування може бути використано більше одного стовпчика. Спочатку йде формування групи по значеннях першого стовпчика, а всередині групи – по значеннях другого стовпчика : :

SELECT student_id, subj_id, MAX(mark) 
  FROM exam_marks 
  GROUP BY  student_id, subj_id; 

Відбір підмножин - HAVING

При необхідності частина груп, сформованих за допомогою GROUP BY, може бути відібрана за допомогою критерію заданого в операторі HAVING. В умові, яка задається оператором HAVING, вказуються тільки поля або вирази, які мають одне значення для кожної групи:

SELECT subj_name, MAX(hour) 
    FROM subject 
    GROUP BY  subj_name 
    HAVING MAX(hour) >= 40;

Додати коментар


Захисний код
Оновити

Меню

  •  Facebook 

Обрати мову

Хто на сайті

На сайті 173 гостей та відсутні користувачі