Опишите функции преобразования типов данных: CAST, CONVERT; и функции агрегирования. Приведите примеры.

Для явного преобразования данных из одного типа в другой в SQL используются функции CAST или CONVERT. Синтаксис этих функций:

CAST (Выражение AS Тип_данных[(Длина)])

CONVERT (Тип_данных[(Длина)], Выражение [, Стиль]), где

Выражение — любое SQL-выражение либо название столбца;

Тип_данных — тип данных, в формате которого представляется данное выражение. Может использоваться числовой, символьный тип или тип дата-время;

Длина — длина поля вывода для символьных типов данных;

Стиль — формат представления данных при конвертировании данных типа дата-время, или числовых типов в символьные типы.

Функции CAST и CONVERT используются при конвертировании символьного типа в числовой тип или тип дата-время и наоборот из числового типа или типа дата-время в символьный тип.

• Любое числовое выражение может быть явно преобразовано в любой другой числовой тип;• В результате преобразования символьного выражения в числовой тип отсекаются начальные и конечные пробелы, а остальные символы преобразуются в числовое значение по правилам языка SQL;• Если явно заданная длина символьного типа недостаточна и преобразованное значение не размещается в нем, то результативное значение усекается справа;• Возможно явное преобразование символьного типа в символьный, но с другой длиной. Если длина результата больше длины аргумента, то значение дополняется пробелами; если меньше, то усекается;• NULL-значение преобразуется в NULL-значение соответствующего типа.ПримерSELECT CAST (STUDENT_ID AS CHAR(10))FROM STUDENT;Агрегирующие функции позволяют получать из таблицы сводную (агрегированную) информацию, выполняя операции над группой строк таблицы. Для задания в SELECT-запросе агрегирующих операций используются следующие ключевые слова:• COUNT определяет количество строк или значений столбца, выбранных посредством запроса и не являющихся NULL-значениями;• SUM вычисляет арифметическую сумму всех выбранных значений данного столбца;• AVG вычисляет среднее значение для всех выбранных значений данного столбца;• МАХ вычисляет наибольшее из всех выбранных значений данного столбца;• MIN вычисляет наименьшее из всех выбранных значений данного столбца.

Для функций SUM и AVG рассматриваемый столбец обязательно должен содержать числовые значения.

В функциях под столбцом понимают, столбец виртуальной таблицы, в которой могут содержаться данные не только из столбца базовой таблицы, но и данные, полученные путем преобразования. При этом выражение, определяющее столбец такой таблицы, может быть сколь угодно сложным, но не должно содержать агрегирующие функций (вложенность агрегирующих функций не допускается). Однако из агрегирующих функций можно составлять любые выражения.

Аргументу всех функций, кроме COUNT(*), может предшествовать ключевое слово DISTINCT (различный), указывающее, что избыточные дублирующие значения должны быть исключены перед тем, как будет применяться функция. Специальная же функция COUNT(*) служит для подсчета всех без исключения строк в таблице (включая дубликаты).

Если в запросе, использующем агрегирующие функции, не используется фраза GROUP BY, то в перечень элементов оператора SELECT можно включать лишь агрегирующие функции или выражения, содержащие такие функции. Другими словами, нельзя иметь в списке столбцы, не являющихся аргументами агрегирующих функций.

Например, из таблицы книги, необходимо вывести максимальную сумму, которую можно получить при продаже всех одинаковых книг, среднюю цену продаваемых книг, количество авторов книг продаваемых в магазине

SELECTMAX(Кол_Кн*Цена), AVG(Цена), COUNT(DISTINCT Автор)

FROMКНИГИ;