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

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

Обычно СУБД поддерживается стандартный набор типов функций, а именно:

1. Функции SQL для обработки текста

Реализация SQL в СУБД Access имеет следующие функции для обработки текста:

Знак операции
Значение
LEFT() Отбирает символы в тексте слева
RIGHT() Отбирает символы в тексте справа
MID() Отбирает символы с середины текста
UCase() Переводит символы в верхний регистр
LCase() Переводит символы в нижний регистр
LTrim() Удаляет все пустые символы слева от текста
RTrim() Удаляет все пустые символы справа от текста
Trim() Удаляет все пустые символы с обеих сторон текста

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

SELECT Product, UCase(Product) AS Product_UCase FROM Sumproduct

Выделим первые три символа в тексте с помощью функции LEFT():

SELECT Product, LEFT(Product, 3) AS Product_LEFT FROM Sumproduct

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

Функции обработки чисел предназначены для выполнения математических операций над числовыми данными. Эти функции предназначены для алгебраических и геометрических вычислений, поэтому они используются значительно реже функций обработки даты и времени. Однако числовые функции наиболее стандартизированными для всех версий SQL. Давайте взглянем на перечень числовых функций:

Знак операции
Значение
SQR() Возвращает корень квадратный указанного числа
ABS() Возвращает абсолютное значение числа
EXP() Возвращает экспоненту указанного числа
SIN() Возвращает синус указанного угла
COS() Возвращает косинус указанного угла
TAN() Возвращает тангенс указанного угла

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

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

SELECT Amount, SQR(Amount) AS Amount_SQR FROM Sumproduct

3. Функции SQL для обработки даты и времени

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

Список некоторых функций для обработки даты и времени в СУБД 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() Возвращает среднее значение в столбце

Примеры использования функции COUNT():

SELECT COUNT(*) AS Count1 FROM Sumproduct - возвращает количество всех строк в таблице

SELECT COUNT(Product) AS Count2 FROM Sumproduct - возвращает количество всех непустых строк в поле Product

Мы намеренно удалили одно значение в столбце Product , чтобы показать разницу в работе двух запросов.

Примеры использования функции SUM():

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

Данным запросу мы отразили общее количество проданного товара в апреле.

SELECT SUM(Quantity*Amount) AS Sum2 FROM Sumproduct

Как видим, в статистических функциях мы можем осуществлять вычисления над несколькими столбцами с использованием стандартных математических операторов.

Пример использования функции MIN():

SELECT MIN(Amount) AS Min1 FROM Sumproduct

Пример использования функции MAX():

SELECT MAX(Amount) AS Max1 FROM Sumproduct

Пример использования функции AVG():

SELECT AVG(Amount) AS Avg1 FROM Sumproduct

Статьи по теме:

  • SQL-Урок 6. Вычисляемые поля
  • SQL-Урок 8. Группировка данных (GROUP BY)