ВГОРУ

SQL-Урок 7. Функції обробки даних

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


В більшості СУБД підтримується стандартний набір типів функцій, а саме:

  • Текстові функції, що використовуються для обробки тексту (виокремлення частини символів з тексту, визначення довжини тексту, переведення символів в верхній або нижній регістр...);
  • Числові функції. Використовуються для виконання математичних операцій над числовими значеннями;
  • Функції дати та часу (здійснюються маніпулювання датою та часом, розраховуються період між датами, перевіряються дати на коректність тощо);
  • Статистичні функції (для обчислення максимальних/мінімальних значень, середніх значень, підрахунок кількості та суми...);
  • Системні функції (надають різного роду службову інформацію про СУБД, користувача та ін.).
  • 1. Функції SQL для обробки тексту

    Реалізація SQL в MS Access має наступні функції для обробки тексту:

    Функція
    Опис
    Left() Відбирає символи в тексті зліва
    Right() Відбирає символи в тексті справа
    Mid() Відбирає символи з середини тексту
    UCase() Переводить символи в верхній регістр
    LCase() Переводить символи в нижній регістр
    LTrim() Видаляє всі порожні символи зліва від тексту
    RTrim() Видаляє всі порожні символи справа від тексту
    Trim() Видаляє всі порожні символи з обох боків тексту

    Переведемо назви товарів у верхній регістр за допомогою функції UCase():

    Run SQLSELECT Product, UCase(Product) AS Product_UCase 
    FROM Sumproduct
    

    Виокремимо перші три символи у тексті за допомогою функції LEFT():

    Run SQLSELECT Product, LEFT(Product, 3) AS Product_LEFT 
    FROM Sumproduct
    

    2. Функції SQL для обробки чисел

    Функції обробки чисел призначені для виконання математичних операцій над числовими даними. Ці функції призначені для алгебраїчних та геометричних обчислень, тому вони використовуються значно рідше функцій обробки дати та часу. Проте числові функції є найбільш стандартизованими для усіх версій SQL. Давайте поглянемо на перелік числових функцій:

    Функція
    Опис
    SQR() Повертає корінь квадратний вказаного числа
    ABS() Повертає абсолютне значення числа
    EXP() Повертає експоненту вказаного числа
    SIN() Повертає синус вказаного кута
    COS() Повертає косинус вказаного кута
    TAN() Повертає тангенс вказаного кута

    Ми навели лише кілька основних функцій, проте ви завжди можете звернутися до документації вашої СУБД, щоб переглянути повний перелік функцій, що підтримуються з їх детальним описом.

    Наприклад, напишемо запит для отримання кореня квадратного для чисел в стовпці Amount за допомогою функції SQR():

    Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR 
    FROM Sumproduct
    
    В MySQL використовується функція SQRT() для отримання квадратного кореня із числа.

    3. Функції SQL для обробки дати та часу

    Функції маніпулювання датою та часом являються одними з найважливіших і часто використовуваних функцій SQL. В базах даних значення дат та часу зберігаються в спеціальному форматі, тому їх неможливо використовувати напряму без додаткової обробки. Кожна СУБД має свій набір функцій для обробки дат, що, нажаль, не дозволяє переносити їх на інші платформи та реалізації SQL.

    Список деяких функцій для обробки дати та часу в MS Access:

    Функція
    Опис
    DatePart() Повертає частину дати: рік, квартал, місяць, тиждень, день, годину, хвилини, секунди
    Year(), Month() Повертає рік та місяць відповідно
    Hour(), Minute(), Second() Повертає годину, хвилини та секунди вказаної дати
    WeekdayName() Повертає назву дня тижня

    Подивимось на прикладі як працює функція DatePart():

    SELECT Date1, DatePart("m", Date1) AS Month1 
    FROM Sumproduct
    

    Функція DatePart() має додатковий параметр, який нам дозволяє відобразити необхідну частину дати. В прикладі ми використали значення параметра "m", який відображає номер місяця (таким же чином ми можемо відобразити рік - "yyyy", квартал - "q", день - "d", тиждень - "w", годину - "h", хвилини - "n", секунди - "s" тощо).

    4. Статистичні функції SQL

    Статистичні функції допомагають нам отримати готові дані без їх вибірки. SQL-запити з цими функціями часто використовуються для аналізу та створення різноманітних звітів. Прикладом таких вибірок може бути: визначення кількості рядків в таблиці, отримання суми значень по певному полю, пошук найбільшого/найменшого або середнього значення в зазначеному стовпці таблиці. Також зазначимо, що статистичні функції підтримуються усіма СУБД без якихось особливих змін в написанні.

    Список статистичних функцій в СУБД Access:

    Функція
    Опис
    COUNT() Повертає число рядків в таблиці або стовпці
    SUM() Повертає суму значень в стовпці
    MIN() Повертає найменше значення в стовпці
    MAX() Повертає найбільше значення в стовпці
    AVG() Повертає середнє значення в стовпці

    4.1 Приклади використання функції COUNT()

    Повертає кількість усіх рядків в таблиці:

    Run SQLSELECT COUNT(*) AS Count1 
    FROM Sumproduct
    

    Повертає кількість усіх непорожніх рядків в полі Product:

    SELECT COUNT(Product) AS Count2 
    FROM Sumproduct
    

    Ми навмисно видалили одне значення в стовпці Product, щоб показати різницю в роботі двох запитів.

    4.2 Приклади використання функції SUM()

    Run SQLSELECT SUM(Quantity) AS Sum1 
    FROM Sumproduct 
    WHERE Month = 'April'
    

    Даним запитом ми відобразили загальну кількість проданого товару в квітні місяці.

    Run SQLSELECT SUM(Quantity*Amount) AS Sum2 
    FROM Sumproduct
    

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

    4.3 Приклад використання функції MIN()

    Run SQLSELECT MIN(Amount) AS Min1 
    FROM Sumproduct
    

    4.4 Приклад використання функції MAX()

    Run SQLSELECT MAX(Amount) AS Max1 
    FROM Sumproduct
    

    4.5 Приклад використання функції AVG()

    Run SQLSELECT AVG(Amount) AS Avg1
    FROM Sumproduct