SQL-Урок 6. Розрахункові (обчислювальні) поля

Для чого потрібно використовувати розрахункові поля? Як правило, інформація в БД представлена в розрізі окремих фрагментів, оскільки так легше структуризувати дані та оперувати ними. Проте нам часто буде потрібно використовувати не окремі частини даних, а вже поєднану та оброблену інформацію. Наприклад, часто необхідно поєднувати ім'я та прізвище клієнтів, поєднувати елементи адрес, які знаходяться в різних стовпцях таблиці, обробляти текст та окремі слова, букви та символи, підсумовувати загальну вартість покупки, відображати статистику по інформації, яка знаходиться в БД. Дані, зазвичай, зберігаються окремими "кусками", що вимагає їх додаткового опрацювання на стороні клієнтської програми. Проте є можливість отримувати вже оброблену інформацію за допомогою СУБД. Саме в цьому випадку допомагають розрахункові поля. Вони автоматично створюються при виконанні запиту і мають вигляд та властивості звичайних стовпців, які є вже наявні в таблиці. Єдина відммінність полягає в тому, що фізично розрахункових полів немає, тому вони не займають додаткового місця в БД, а тимчасово існують в "оперативній пам'яті" СУБД. Перевагою виконання операцій на стороні СУБД являється швидкість опрацювання даних.

1. Виконання математичних операцій

Одним із способів використання розрахункових полів є виконання математичних операцій над вибраними даними. Давайте на прикладі розглянемо як це відбувається, використавши знову нашу таблицю Sumproduct. Припустимо, на потрібно вирахувати середню ціну придбання кожного товару. Для цього потрібно переділити колонку Amount (сума) на Quantity (кількість):

SELECT DISTINCT Product, Amount/Quantity FROM Sumproduct

Як бачимо, СУБД відібрала всі найменування товарів та відобразила їх середню вартість в окремому стовпці, який був створений під час виконання запиту. Також можна помітити, що ми використали додатковий оператор DISTINCT, який нам потрібен для відображення унікальних назв товарів (без нього ми б отримали дублювання записів).

2. Використання псевдонімів

В попередньому прикладі ми розраховували середню вартісь покупки кожного товару та відобразили значення в розрахунковому стовпці. Проте надалі, нам буде незручно звертатися до цього поля, оскільки його назва є неінформативною для нас (СУБД дала назву полю - Expr1001). Проте ми можемо назвати поле самостійно, наперед вказавши його назву в запиті, тобто дати псевдонім. Давайте перепишемо попередній приклад та вкажемо псевдонім для розрахункового поля:

SELECT DISTINCT Product, Amount/Quantity AS AvgPrice FROM Sumproduct

Бачимо, наше розрахункове поле отримало власну назву AvgPrice. Для цього ми використали оператор AS, після якого вказали необхідну нам назву. Bарто зазначити, що в SQL підтримуються лише основні математичні операції: додавання(+), віднімання(-), множення(*), ділення(/). Також для зміни черговості виконання операції можна використовувати круглі дужки.

Часто псевдоніми використовують не тільки щоби називати розрахункові поля, але і для перейменування діючих. Це може бути необхідним, якщо діюче поле має довгу назву або назва не є достатньо інформативною.

3. З'єднання полів (конкатенація)

Крім математичних операцій ми також можемо поєднувати текст та виводити його в окремому полі. Давайте розглянемо, яким чином можна здійснити склеювання (конкатенацію) тексту. Маємо такий приклад:

SELECT Month + ' ' + Product AS NewField, Quantity FROM Sumproduct

В цьому прикладі ми з'єднали значення в двох стовпцях та вивели результат в нове поле NewField.

Статті по темі:

  • SQL-Урок 5. Використання метасимволів (LIKE)
  • SQL-Урок 7. Функції обробки даних