НОУ ІНТУІТ, Лекція, Обчислення та підбиття підсумків у запитах

Побудова обчислюваних полів

У загальному випадку для створення обчислюваного (похідного) поля у списку SELECT слід вказати деякий вираз мови SQL. У цих виразах застосовуються арифметичні операції додавання, віднімання, множення та поділу, а також вбудовані функції мови SQL. Можна вказати ім'я будь-якого стовпця (поля) таблиці чи запиту, але використовувати ім'я стовпця лише тієї таблиці чи запиту, які вказані у списку пропозиції FROM відповідної інструкції. При побудові складних виразів можуть знадобитися дужки.

Стандарти SQL дозволяють явно задавати імена стовпців результуючої таблиці, для чого застосовується фраза AS .

Приклад 6.1. Розрахувати загальну вартість кожної угоди. Цей запит використовує розрахунок результуючих стовпців на основі арифметичних виразів.

Приклад 6.2. Отримати список фірм із зазначенням прізвища та ініціалів клієнтів.

У запиті використано вбудовану функцію Left , що дозволяє вирізати в текстовій змінній один символ зліва в даному випадку.

Приклад 6.3. Отримати список товарів із зазначенням року та місяця продажу.

У запиті використані вбудовані функції Year та Month для виділення року та місяця з дати.

Використання підсумкових функцій

За допомогою підсумкових (агрегатних) функцій у рамках SQL-запиту можна отримати ряд узагальнюючих статистичних відомостей про безліч відібраних значень вихідного набору.

Користувачеві доступні такі основні підсумкові функції:

  • Count (Вираз) - визначає кількість записів у вихідному наборі SQL-запиту;
  • Min/Max (Вираз) - визначають найменше та найбільше з безлічі значень у деякому полі запиту;
  • Avg(Вираз) - ця функція дозволяє розрахувати середнє значення безлічі значень, що зберігаються в певному полі відібраних запитом записів. Воно є арифметичним середнім значенням, тобто. сумою значень, поділеної з їхньої кількість.
  • Sum (Вираз) – обчислює суму безлічі значень, що містяться в певному полі відібраних запитом записів.

Найчастіше як вираз виступають імена стовпців. Вираз може обчислюватися і за значеннями кількох таблиць.

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

Якщо перед застосуванням узагальнюючої функції необхідно виключити значення, що дублюються, слід перед ім'ям стовпця у визначенні функції помістити ключове слово DISTINCT . Воно не має сенсу для функцій MIN і MAX, проте його використання може вплинути на результати виконання функцій SUM і AVG, тому необхідно заздалегідь обміркувати, чи воно має бути присутнім у кожному конкретному випадку. Крім того, ключове слово DISTINCT може бути вказане у будь-якому запиті не більше одного разу.

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

Приклад 6.4. Визначити першу за алфавітом назву товару.

Приклад 6.5. Визначити кількість угод.