Функции ms sql: Создание определяемых пользователем функций (компонент Database Engine) — SQL Server

Содержание

3.3. Хранимые функции Transact-SQL — Transact-SQL В подлиннике : Персональный сайт Михаила Флёнова

С SQL Server вы можете создавать ваши собственные функции, добавляющие и расширяющие функции, предоставляемые системой. Функции могут получать 0 или более параметров и возвращать скалярное значение или таблицу. Входные параметры могут быть любого типа, исключая timestamp, cursor, table.

Сервер SQL поддерживает три типа функций определенных пользователем:

  • Скалярные функции – похожи на встроенные функции;
  • Функция, возвращающая таблицу — возвращает результат единичного оператора SELECT. Он похож на объект просмотра, но имеет большую эластичность благодаря использованию параметров, и расширяет возможности индексированного объекта просмотра;
  • Многооператорная функция — возвращает таблицу созданную одним или несколькими операторами Transact-SQL, чем напоминает хранимые процедуры. В отличие от процедур, на такие функции можно ссылаться в WHERE как на объект просмотра.

3.3.1. Создание хранимой функции

Создание функций очень похоже на создание процедур и объектов просмотра. Недаром мы рассматриваем все эти темы в одной главе. Для создания функции используется оператор CREATE FUNCTION. В зависимости от типа, Объявление будет отличаться. Рассмотрим все три типа объявления.

Скалярная функция:


CREATE  FUNCTION [ owner_name. ] function_name 
    ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } 
      [ ,...n ] ] ) 

RETURNS scalar_return_data_type

[ WITH  [ [,] ...n] ] 

[ AS ]

BEGIN 
    function_body 
    RETURN scalar_expression
END

Функция, возвращающая таблицу:


CREATE FUNCTION [ owner_name. ] function_name 
    ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } 
     [ ,...n ] ] ) 

RETURNS TABLE 

[ WITH  [ [,] ...n ] ] 

[ AS ] 

RETURN [ ( ] select-stmt [ ) ]

Многооператорные функции:


CREATE FUNCTION [ owner_name.  ] function_name 
    ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } 
     [ ,...n ] ] ) 

RETURNS @return_variable TABLE  

[ WITH  [ [,] ...n ] ] 

[ AS ] 

BEGIN 
    function_body 
    RETURN
END

 ::= 
    { ENCRYPTION | SCHEMABINDING }

 :: = 
    ( { column_definition | table_constraint } [ ,...n ] ) 

3.3.2. Скалярные функции в Transact-SQL

Давайте для примера создадим функцию, которая будет возвращать скалярное значение. Например, результат перемножение цены на количество указанного товара. Товар будет идентифицироваться по названию и дате, ведь мы договорились, что сочетание этих полей дает уникальность. Но будьте осторожны, при тестировании запроса, если в разделе 3.2.8 вы выполнили запрос на изменение данных и создали дубликаты покупок за 1.1.2005-го года.

Итак, посмотрим сначала на код создание скалярной функции:


CREATE FUNCTION GetSumm
 (@name varchar(50), @date datetime)
RETURNS numeric(10,2)
 BEGIN
  DECLARE @Summ numeric(10,2)
  SELECT @Summ = Цена*Количество
  FROM Товары
  WHERE [Название товара]=@name
    AND Дата=@date;
  RETURN @Summ
 END

После оператора CREATE FUNCTION мы указываем имя функции. Далее, в скобках идут параметры, которые необходимо передать. Да, параметры должны передаваться через запятую в круглых скобках. В этом объявление отличается от процедур и эту разницу необходимо помнить.

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

Код, который должна выполнять функция пишется между ключевыми словами BEGIN (начало) и END (конец). В коде можно использовать любые операторы Transact-SQL, которые мы изучали ранее. Итак, объявление нашей функции в упрощенном виде можно описать следующим образом:


CREATE FUNCTION GetSumm
 (@name varchar(50), @date datetime)
RETURNS numeric(10,2) 
 BEGIN
  -- Код функции
 END

Между ключевыми словами BEGIN и END у нас выполняется следующий код:


-- Объявление переменной
DECLARE @Summ numeric(10,2)

-- Выполнение запроса на выборку суммы
SELECT @Summ = Цена*Количество
FROM Товары
WHERE [Название товара]=@name
  AND Дата=@date;

-- Возврат результата
RETURN @Summ

В первой строке объявляется переменная @Summ. Она нужна для хранения промежуточного результата расчетов. Далее выполняется запрос SELECT, в котором происходит поиск строки по дате и названию товара в таблице товаров. В найденной строке перемножаются поля цены и количества, и результат записывается в переменную @Summ.

Обратите внимание, что в конце запроса стоит знак точки с запятой. Каждый запрос должен заканчиваться этим символом, но в большинстве примеров мы этим пренебрегали, но в функции отсутствие символа «;» может привести к ошибке.

В последней строке возвращаем результат. Для этого нужно написать ключевое слово RETURN, после которого пишется возвращаемое значение или переменная. В данном случае, возвращаться будет содержимое переменной @Summ.

Так как функция скалярная, то и возвращаемое значение должно быть скалярным и при этом соответствовать типу, описанному после ключевого слова RETURNS.

3.3.3. Использование функций

Как выполнить такую функцию? Да также, как и многие другие системные функции (например, GETDATE()). Например, следующий пример использует функцию в операторе SELECT:


SELECT dbo.GetSumm('Картофель', '03.03.2005')

В этом примере, оператор SELECT возвращает результат выполнения функции GetSumm. Функция принадлежит пользователю dbo, поэтому перед именем я указал владельца. После имени в скобках должны быть перечислены параметры в том же порядке, что и при объявлении функции. В данном примере я запрашиваю затраты на картофель, купленный 3.3.2005.

Выполните следующий запрос и убедитесь, что он вернул тот же результат, что и созданная нами функция:


SELECT Цена*Количество
FROM Товары
WHERE [Название товара]='Картофель'
  AND Дата='03.03.2005'

Функции можно использовать не только в операторе SELECT, но и напрямую, присваивая значение переменной. Например:


DECLARE @Summ numeric(10,2)
SET @Summ=dbo.GetSumm('Картофель', '03.03.2005')
PRINT @Summ

В этом примере мы объявили переменную @Summ типа numeric(10,2). Именно такой тип возвращает функция. В следующей строке переменной присваивается результат выполнения Summ, с помощью SET.

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

Итак, в моей таблице есть две покупки хлеба 1.1.2005-го числа. Попробую запросить у функцию сумму:


SELECT dbo.GetSumm('Хлеб', '01.01.2005')

Результатом будет только одно число, хотя строки две. А какую строку из двух вернул сервер? Никто точно сказать не может, потому что они обе одинаковые и без единого различия. Поэтому сервер скорей всего вернул первую из строк.

3.3.4. Функция, возвращающая таблицу

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


CREATE FUNCTION GetPrice()
RETURNS TABLE
AS
 RETURN 
 (
  SELECT Дата, [Название товара], Цена, 
    Количество, Цена*Количество AS Сумма
  FROM Товары
 )

Начало функции такое же, как у скалярной – указываем оператор CREATE FUNCTION и имя функции. Я специально создал эту функцию без параметров, чтобы вы увидели, как это делается. Не смотря на то, что параметров нет, после имени должны идти круглые скобки, в которых не надо ничего писать. Если не указать скобок, то сервер вернет ошибку и функция не будет создана.

Разница есть и в секции RETURNS, после которой указывается тип TABLE, что говорит о необходимости вернуть таблицу. После этого идет ключевое слово AS и RETURN, после которого должно идти возвращаемое значение. Для функции данного типа в секции RETURN нужно в скобках указать запрос, результат которого и будет возвращаться функцией.

Когда пишете запрос, то все его поля должны содержать имена. Если одно из полей не имеет имени, то результатом выполнения оператора CREATE FUNCTION будет ошибка. В нашем примере последнее поле является результатом перемножения полей «Цена» и «Количество», а такие поля не имеют имени, поэтому мы его задаем с помощью ключевого слова AS.

Посмотрим, как можно использовать такую функцию с помощью оператора SELECT:


SELECT * 
FROM GetPrice()

Так как мы используем простой оператор SELECT, то мы можем и ограничивать вывод определенными строками, с помощью ограничений в секции WHERE. Например, в следующем примере выбираем из результата функции только те строки, в которых поле «Количество» содержит значение 1:


SELECT * FROM GetPrice()
WHERE Количество=1

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


CREATE FUNCTION GetPeoples()
RETURNS TABLE
AS
 RETURN 
 (
  SELECT idPeoples, vcFamil+' '+vcName+' '+vcSurName AS FIO
  FROM tbPeoples
 )

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


SELECT * 
FROM GetPeoples() p, tbPhoneNumbers pn
WHERE p.idPeoples=pn.idPeoples

Как видите, функции, возвращающие таблицы очень удобны. Они больше, чем процедуры похожи на объекты просмотра, но при этом позволяют принимать параметры. Таким образом, можно сделать так, чтобы сама функция возвращала нам только то, что нужно. Вьюшки такого не могут делать по определению. Чтобы получить нужные данные, вьюшка должна выполнить свой SELECT запрос, а потом уже во внешнем запросе мы пишем еще один оператор SELECT, с помощью которого ограничивается вывод до необходимого. Таким образом, выполняется два запроса SELECT, что для большой таблицы достаточно накладно. Функция же может сразу вернуть только то, что нужно.

Рассмотрим пример, функция GetPeoples у нас возвращает все строки таблицы. Чтобы получить только нужную фамилию, нужно писать запрос типа:


SELECT * 
FROM GetPeoples()
WHERE FIO LIKE 'ПОЧЕЧКИН%'

В этом случае будут выполняться два запроса: этот и еще один внутри функции. Но если передавать фамилию в качестве параметра в функцию и там сделать секцию WHERE, то можно обойтись и одним запросом SELECT:


CREATE FUNCTION GetPeoples1(@Famil varchar(50))
RETURNS TABLE
AS
 RETURN 
 (
  SELECT idPeoples, vcFamil+' '+vcName+' '+vcSurName AS FIO
  FROM tbPeoples
  WHERE vcFamil=@Famil
 )

3.

3.5. Много операторная функция возвращающая таблицу

Все функции, созданные в разделе 3.3.5 могут возвращать таблицу, сгенерированную только одним оператором SQL. А как же тогда сделать возможность выполнять несколько операций? Например, вы можете захотеть выполнять дополнительные проверки входных параметров для обеспечения безопасности. Проверки лишними не бывает, особенно входных данных и особенно, если эти входные данные указываются пользователем.

Следующий пример показывает, как создать функцию, которая может вернуть в качестве результата таблицу, и при этом, в теле функции могут выполняться несколько операторов:


CREATE FUNCTION имя (параметры)
RETURNS  имя_переменной TABLE 
  (описание вида таблицы, 
   в которой будет представлен результат)
AS
 BEGIN
  Выполнение любого количества операций
  RETURN
 END

Это упрощенный вид создания процедуры. Более полный вид мы рассматривали в начале главы, а сейчас я упростил объявление, чтобы проще было его разбирать.

Объявление больше похоже на создание скалярных функций. Первая строка без изменений. В секции RETURNS объявляется переменная, которая имеет тип TABLE. После этого, в скобках нужно описать поля результирующей таблицы. После ключевого слова AS идtт пара операторов BEGIN и END, между которыми может выполняться какое угодно количество операций. Выполнение операций заканчивается ключевым словом RETURN.

Вот тут есть одно отличие от скалярных функций – после RETURN мы указывали имя переменной, значение которой должно стать результатом. В данном случае ничего указывать не надо. Мы уже объявили переменную в секции RETURNS и описали формат этой переменной. В теле функции мы можем и должны наполнить эту переменную значениями и именно это попадет в результат.

Теперь посмотрим на пример создания функции:


CREATE FUNCTION getFIO ()
RETURNS  @ret TABLE 
  (idPeoples int primary key,
   vcFIO varchar(100))
AS
 BEGIN
  INSERT @ret
  SELECT idPeoples, vcFamil+' '+vcName+' '+vcSurName
  FROM tbPeoples;

  RETURN
 END

В данном примере в качестве результата объявлена переменная @ret, которая является таблицей из двух полей «idPeoples» типа int и «vcFIO» типа varchar длинной в 50 символов. В теле функции в эту таблицу записываются значения из таблицы tbPeoples и выполняется оператор RETURN, завершающий выполнение функции.

В использовании, такая функция ничем не отличается от рассмотренных ранее. Например, следующий запрос выбирает все данные, которые возвращает функция:


SELECT * 
FROM GetFIO()

3.3.6. Опции функций

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

Если функция создана с опцией SCHEMABINDING, то объекты базы данных, на которые ссылается функция, не могут быть изменены (с использованием оператора ALTER) или удалены (с помощью оператора DROP). Например, следующая функция использует таблицу tbPeoples и при этом используется опция SCHEMABINDING:


CREATE FUNCTION GetPeoples2(@Famil varchar(50))
RETURNS TABLE
WITH SCHEMABINDING
AS
 RETURN 
 (
  SELECT idPeoples, vcFamil+' '+vcName+' '+vcSurName AS FIO
  FROM dbo. tbPeoples
  WHERE vcFamil=@Famil
 )

Функция может быть связанной со схемой, только если следующие ограничения истины:

  • все функции объявленные пользователем и просмотрщики на которые ссылается функция, также связаны со схемой с помощью опции SCHEMABINDING;
  • объекты, на которые ссылается функция, должны использовать имя из двух частей именования: owner.objectname. При создании функции GetPeoples2 ссылка на таблицу указана именно в таком формате – dbo.tbPeoples;
  • Функция и объекты должны быть расположены в одной базе данных;
  • Пользователь, который создает функцию, имеет право доступа ко всем объектам, на которые ссылается функция.

Создайте функцию и попробуйте после этого удалить таблицу tbPeoples.


DROP TABLE tbPeoples

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

Чтобы увидеть сообщение без удаления ключа, давайте добавим к таблице колонку, а потом попробуем ее удалить:


-- Добавим колонку
ALTER TABLE dbo.tbPeoples
ADD 
 vcTemp VARCHAR(30) NOT NULL default ''

-- Попробуем ее удалить
ALTER TABLE dbo.tbPeoples
DROP COLUMN vcTemp

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

3.3.7. Изменение функций

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

1. Общий вид команды изменения скалярной функции:


ALTER FUNCTION [ owner_name.  ] function_name 
    ( [ { @parameter_name scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) 

RETURNS scalar_return_data_type

[ WITH  [,...n] ] 

[ AS ]

BEGIN 
    function_body 
    RETURN scalar_expression
END

2. Общий вид изменения функции, возвращающей таблицу:


ALTER FUNCTION [ owner_name. ] function_name 
    ( [ { @parameter_name scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) 

RETURNS TABLE 

[ WITH  [ ,...n ] ] 

[ AS ] 

RETURN [ ( ] select-stmt [ ) ] 

3. Общий вид команды изменения функции с множеством операторов, возвращающей таблицу.


ALTER FUNCTION [ owner_name. ] function_name 
    ( [ { @parameter_name scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) 

RETURNS @return_variable TABLE  

[ WITH  [ ,...n ] ] 

[ AS ] 

BEGIN 
    function_body 
    RETURN
END

 ::= 
    { ENCRYPTION | SCHEMABINDING }

 :: = 
    ( { column_definition | table_constraint } [ ,. ..n ] ) 

Следующий пример показывает упрощенный вариант команды, изменяющей функцию:


ALTER FUNCTION dbo.tbPeoples
AS
 -- Новое тело функции

3.3.8. Удаления функций

Если вы внимательно читали об объектах просмотра и функциях, то не трудно догадаться, как можно удалить функцию. Конечно же для этого используется оператор DROP FUNCTION:


DROP FUNCTION dbo.GetPeoples2

Агрегатные функции SQL — SUM, MIN, MAX, AVG, COUNT

Навигация по уроку

  • Функция SQL SUM
  • Функция SQL MIN
  • Функция SQL MAX
  • Функция SQL AVG
  • Функция SQL COUNT
  • Агрегатные функции вместе с SQL GROUP BY (группировкой)
  • Разрешены ли агрегатные функции от агрегатных функций?

Связанные темы

  • Оператор SELECT
  • GROUP BY — группировка в запросах
НазадСодержаниеВперёд>>>

Будем учиться подводить итоги. Нет, это ещё не итоги изучения SQL, а итоги значений столбцов таблиц
базы данных. Агрегатные функции SQL действуют в отношении значений столбца с целью получения
единого результирующего значения. Наиболее часто применяются агрегатные функции SQL SUM, MIN, MAX,
AVG и COUNT. Следует различать
два случая применения агрегатных функций. Первый: агрегатные функции используются сами по себе и возвращают
одно результирующее значение. Второй: агрегатные функции используются с оператором SQL GROUP BY, то есть
с группировкой по полям (столбцам) для получения результирующих значений в каждой группе. Рассмотрим сначала случаи использования агрегатных
функций без группировки.

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

SELECT SUM(ИМЯ_СТОЛБЦА) …

После этого выражения следует FROM (ИМЯ_ТАБЛИЦЫ), а далее с помощью конструкции WHERE может быть
задано условие. Кроме того, перед именем столбца может быть указано DISTINCT, и это означает, что
учитываться будут только уникальные значения. По умолчанию же учитываются все значения (для этого
можно особо указать не DISTINCT, а ALL, но слово ALL не является обязательным).

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

Сначала работать будем с базой данных фирмы — Company1. Скрипт для создания этой базы данных, её таблиц и заполения таблиц данными —
в файле по этой ссылке
.

Пример 1. Есть база данных фирмы с данными о её подразделениях
и сотрудниках. Таблица Staff помимо всего имеет столбец с данными о заработной плате сотрудников. Выборка
из таблицы имеет следующий вид (для увеличения картинки щёлкнуть по ней левой кнопкой мыши):

Для получения суммы размеров всех заработных плат используем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):

SELECT SUM(Salary)
FROM Staff

Этот запрос вернёт значение 287664,63.


А теперь упражнение для самостоятельного решения. В упражнениях уже начинаем
усложнять задания, приближая их к тем, что встречаются на практике.

Пример 2. Вывести сумму комиссионных, получаемых всеми сотрудниками
с должностью Clerk.

Правильное решение и ответ.

Функция SQL MIN также действует в отношении столбцов, значениями которых являются числа и возвращает
минимальное среди всех значений столбца. Эта функция имеет синтаксис аналогичный синтаксису функции SUM.

Пример 3. База данных и таблица —
те же, что и в примере 1.

Требуется узнать минимальную заработную плату сотрудников отдела с номером 42.
Для этого пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):

SELECT MIN(Salary)
FROM Staff WHERE Dept=42

Запрос вернёт значение 10505,90.


И вновь упражнение для самостоятельного решения. В этом и некоторых
других упражнениях потребуется уже не только таблица Staff, но и таблица Org, содержащая данные о
подразделениях фирмы:

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

Правильное решение и ответ.

  • Страница 2 (Разрешены ли агрегатные функции от агрегатных функций?)

Аналогично работает и имеет аналогичный синтаксис функция SQL MAX, которая применяется, когда
требуется определить максимальное значение среди всех значений столбца.

Пример 5. База данных и таблица —
те же, что и в предыдущих примерах.

Требуется узнать максимальную заработную плату сотрудников отдела с номером 42.
Для этого пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):

SELECT MAX(Salary)
FROM Staff WHERE Dept=42

Запрос вернёт значение 18352,80


Пришло время упражнения для самостоятельного решения.

Пример 6. Вновь работаем с двумя таблицами — Staff и Org.
Вывести название отдела и максимальное значение комиссионных, получаемых одним сотрудником в отделе,
относящемуся к группе отделов (Division) Eastern. Использовать JOIN (соединение таблиц).

Правильное решение и ответ.

Указанное в отношении синтаксиса для предыдущих описанных функций верно и в отношении функции SQL AVG.
Эта функция возвращает среднее значение среди всех значений столбца.

Пример 7. База данных и таблица —
те же, что и в предыдущих примерах.

Пусть требуется узнать средний трудовой стаж сотрудников отдела с номером 42.
Для этого пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):

SELECT AVG(Years)
FROM Staff WHERE Dept=42

Результатом будет значение 6,33


В следующем упражнении для самостоятельного решения помимо
агрегатной функции требуется использовать также предикат BETWEEN.

Пример 8. Работаем с одной таблицей — Staff.
Вывести среднюю зарплату сотрудников со стажем от 4 до 6 лет.

Правильное решение и ответ.

  • Страница 2 (Разрешены ли агрегатные функции от агрегатных функций?)

Функция SQL COUNT возвращает количество записей таблицы базы данных. Если в запросе указать
SELECT COUNT(ИМЯ_СТОЛБЦА) …, то результатом будет количество записей без учёта тех записей,
в которых значением столбца является NULL (неопределённое). Если использовать в качестве аргумента
звёздочку и начать запрос SELECT COUNT(*) . .., то результатом будет количество всех записей (строк)
таблицы.

Пример 9. База данных и таблица —
те же, что и в предыдущих примерах.

Требуется узнать число всех сотрудников, которые получают комиссионные. Число
сотрудников, у которых значения столбца Comm — не NULL, вернёт следующий запрос (на MS SQL Server — с предваряющей конструкцией USE company1;):

SELECT COUNT(Comm)
FROM Staff

Результатом будет значение 11.

Пример 10. База данных и таблица —
те же, что и в предыдущих примерах.

Если требуется узнать общее количество записей в таблице, то
применяем запрос со звёздочкой в качестве аргумента функции COUNT (на MS SQL Server — с предваряющей конструкцией USE company1;):

SELECT COUNT(*)
FROM Staff

Результатом будет значение 17.


В следующем упражнении для самостоятельного решения потребуется
использовать подзапрос.

Пример 11. Работаем с одной таблицей — Staff.
Вывести число сотрудников в отделе планирования (Plains).

Правильное решение и ответ.

  • Страница 2 (Разрешены ли агрегатные функции от агрегатных функций?)

Теперь рассмотрим применение агрегатных функций вместе с оператором SQL GROUP BY. Оператор SQL GROUP BY
служит для группировки результирующих значений по столбцам таблицы базы данных. На сайте есть урок,
посвящённый отдельно этому оператору
.

Работать будем с базой данных «Портал объявлений 1». Скрипт для создания этой базы данных, её таблицы и заполения таблицы данных —
в файле по этой ссылке
.

Пример 12. Итак, есть база данных портала объявлений. В ней есть
таблица Ads, содержащая данные об объявлениях, поданных за неделю. Столбец Category содержит
данные о больших категориях объявлений (например, Недвижимость), а столбец Parts — о более мелких
частях, входящих в категории (например, части Квартиры и Дачи являются частями категории Недвижимость).
Столбец Units содержит данные о количестве поданных объявлений, а столбец Money — о денежных суммах,
вырученных за подачу объявлений.

CategoryPartUnitsMoney
ТранспортАвтомашины11017600
НедвижимостьКвартиры8918690
НедвижимостьДачи5711970
ТранспортМотоциклы13120960
СтройматериалыДоски687140
ЭлектротехникаТелевизоры1278255
ЭлектротехникаХолодильники1378905
СтройматериалыРегипс11211760
ДосугКниги966240
НедвижимостьДома479870
ДосугМузыка1177605
ДосугИгры412665

Используя оператор SQL GROUP BY, найти суммы денег, вырученных за подачу
объявлений в каждой категории. Пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE adportal1;):

SELECT Category, SUM(Money) AS Money
FROM ADS GROUP BY Category

Результатом будет следующая таблица:

CategoryMoney
Досуг16510
Недвижимость40530
Стройматериалы18900
Транспорт38560
Электротехника17160

Пример 13. База данных и таблица —
та же, что в предыдущем примере.

Используя оператор SQL GROUP BY, выяснить, в какой части каждой категории было
подано наибольшее число объявлений. Пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE adportal1;):

SELECT Category, Part, MAX(Units) AS Maximum
FROM ADS GROUP BY Category

Результатом будет следующая таблица:

CategoryPartMaximum
ДосугМузыка117
НедвижимостьКвартиры89
СтройматериалыРегипс112
ТранспортМотоциклы131
ЭлектротехникаХолодильники137

Итоговые и индивидуальные значения в одной таблице можно получить объединением
результатов запросов с помощью оператора UNION
.

  • Страница 2 (Разрешены ли агрегатные функции от агрегатных функций?)

Поделиться с друзьями

НазадСодержаниеВперёд>>>

List of Transact SQL Functions on SQL Server 2019

004 Certrivate

Aggregate Function APPROX_COUNT_DISTINCT APPROX_COUNT_DISTINCT
Aggregate Function AVG AVG
Aggregate Function CHECKSUM_AGG CHECKSUM_AGG
Агрегатная функция COUNT COUNT Функция подсчета SQL с разделением по пункту
Aggregate Function COUNT_BIG COUNT_BIG
Aggregate Function GROUPING GROUPING
Aggregate Function GROUPING_ID GROUPING_ID
Aggregate Function MAX МАКС.
Агрегированная функция МИН. МИН.
Агрегированная функция STDEV STDEV
Aggregate Function STDEVP STDEVP
Aggregate Function STRING_AGG STRING_AGG String Concatenation in SQL Server with String_Agg Function
Aggregate Function SUM SUM
Агрегированная функция VAR VAR
Агрегированная функция VARP VARP
Analytic Function CUME_DIST CUME_DIST
Analytic Function FIRST_VALUE FIRST_VALUE First_Value SQL Analytic Function in SQL Server
Analytic Function LAG LAG Функция SQL LAG() в SQL Server 2012 для вычисления предыдущего значения
Аналитическая функция The Last_value The Last_value The Last_Value SQL Аналитическая функция в SQL Server
Аналитическая функция Следующее значение СВОЙСТВЕННАЯ ФУНКЦИЯ В SQL Server 2012.

PERCENT_RANK
Аналитическая функция PERCENTILE_CONT PERCENTILE_CONT
Аналитическая функция PERCENTILE_DISC PERCENTILE_DISC
Collation Function COLLATIONPROPERTY COLLATIONPROPERTY
Collation Function TERTIARY_WEIGHTS TERTIARY_WEIGHTS
Configuration Function @@DATEFIRST @@DATEFIRST
Функция конфигурации @@DBTS @@DBTS
Функция конфигурации @@ langid @@ langid
Функция конфигурации @@ language @@ language
Функция конфигурации @@lockimeaut
@@lockimeout
@@lockimeout
@

Функция конфигурации @@MAX_CONNECTIONS @@MAX_CONNECTIONS
Функция конфигурации @@MAX_PRECISION @@MAX_PRECISION
Configuration Function @@NESTLEVEL @@NESTLEVEL
Configuration Function @@OPTIONS @@OPTIONS
Configuration Function @@ REMSERVER @@REMSERVER
Функция конфигурации @@ИМЯ_СЕРВЕРА @@ИМЯ_СЕРВЕРА
Функция конфигурации @@SERVICENAME @@SERVICENAME
Configuration Function @@SPID @@SPID
Configuration Function @@TEXTSIZE @@TEXTSIZE
Configuration Функция @@VERSION @@VERSION
Функция преобразования CAST and CONVERT CAST и CONVERT

1

10004 Conversion Function

PARSE PARSE
Conversion Function TRY_CAST TRY_CAST
Conversion Function TRY_CONVERT TRY_CONVERT
Conversion Function TRY_PARSE TRY_PARSE
Криптографическая функция ASYMKEY_ID ASYMKEY_ID
Криптографическая функция ASYMKEYPROPERTY ASYMKEYPROPERTY
Cryptographic function CERTENCODED CERTENCODED
Cryptographic function CERTPRIVATEKEY CERTPRIVATEKEY
Cryptographic function DECRYPTBYASYMKEY DECRYPTBYASYMKEY
Криптографическая функция DECRYPTBYCERT DECRYPTBYCERT
Cryptographic function DECRYPTBYKEY DECRYPTBYKEY
Cryptographic function DECRYPTBYKEYAUTOASYMKEY DECRYPTBYKEYAUTOASYMKEY
Cryptographic function DecryptByKeyAutoCert DecryptByKeyAutoCert
Cryptographic function DECRYPTBYPASSPHRASE РАСШИФРОВАТЬ БАЙПАРСФРАЗУ
Cryptographic function ENCRYPTBYASYMKEY ENCRYPTBYASYMKEY
Cryptographic function ENCRYPTBYCERT ENCRYPTBYCERT
Cryptographic function ENCRYPTBYKEY ENCRYPTBYKEY
Cryptographic function ENCRYPTBYPASSPHRASE ENCRYPTBYPASSPHRASE
Криптографическая функция HASHBYTES HASHBYTES
Cryptographic function IS_OBJECTSIGNED IS_OBJECTSIGNED
Cryptographic function KEY_GUID KEY_GUID
Cryptographic function KEY_ID KEY_ID
Криптографическая функция KEY_NAME KEY_NAME
Криптографическая функция SIGNBYASYMKEY SIGNBYASYMKEY
Cryptographic function SIGNBYCERT SIGNBYCERT
Cryptographic function SYMKEYPROPERTY SYMKEYPROPERTY
Cryptographic function VERIFYSIGNEDBYASMKEY VERIFYSIGNEDBYASMKEY
Криптографическая функция VERIGYSIGNEDBYCERT VERIGYSIGNEDBYCERT
Cursor Function @@CURSOR_ROWS @@CURSOR_ROWS
Cursor Function @@FETCH_STATUS @@FETCH_STATUS
Cursor Function CURSOR_STATUS CURSOR_STATUS
Тип данных Функция DATALENGTH DATALENGTH
Тип данных Функция IDENT_CURRENT Ident_current
Функция типа данных IDEA_INCR IDEAR_INCR
Функция типа данных IDEAD_SEED IDEAD_SEED
Функция DATA. Function Function). Функциональная функция).
Тип данных Функция SQL_VARIANT_PROPERTY SQL_VARIANT_PROPERTY
Дата и время Функция @@ DateFirst @@ DateFirst
Date & Time Function @@ Язык @@ Язы и функция времени DATEADD DATEADD
функция даты и времени DATEDIFF DATEDIFF
Date & Time Function DATEDIFF_BIG DATEDIFF_BIG
Date & Time Function DATEFROMPARTS DATEFROMPARTS
Date & Time Function DATENAME DATENAME
Date & Time Функция DATEPART DATEPART
Дата и время Функция DATETIME2FROMPARTS DATETIME2FROMPARTS
Date & Time Function DATETIMEFROMPARTS DATETIMEFROMPARTS
Date & Time Function DATETIMEOFFSETFROMPARTS DATETIMEOFFSETFROMPARTS
Date & Time Function DAY DAY
Функция даты и времени КОНМЕСЯЦА КОНМЕСЯЦА SQL Server EOMonth Функция конца месяца для расчета последнего дня месяца
Date & Time Function GETDATE GETDATE
Date & Time Function GETUTCDATE GETUTCDATE
Date & Time Function ISDATE ISDATE
Date Функция времени и даты МЕСЯЦ МЕСЯЦ
Функция даты и времени УСТАНОВКА ДАТЫ ПЕРВОЙ УСТАНОВКА ДАТЫ ПЕРВОЙ
Date & Time Function SET DATEFORMAT SET DATEFORMAT
Date & Time Function SET LANGUAGE SET LANGUAGE
Date & Time Function SMALLDATETIMEFROMPARTS SMALLDATETIMEFROMPARTS
Дата и время Функция sp_helplanguage sp_helplanguage
Date & Time Function SWITCHOFFSET SWITCHOFFSET
Date & Time Function SYSDATETIME SYSDATETIME
Date & Time Function SYSDATETIMEOFFSET SYSDATETIMEOFFSET
Date & Time Function SYSUTCDATETIME SYSUTCDATETIME
Функция даты и времени TIMEFROMPARTS TIMEFROMPARTS
Date & Time Function TODATETIMEOFFSET TODATETIMEOFFSET
Date & Time Function YEAR YEAR
JSON Function ISJSON ISJSON
Функция JSON JSON_MODIFY JSON_MODIFY
Функция JSON JSON_QUERY JSON_QUERY
JSON Function JSON_VALUE JSON_VALUE
Logical Function CHOOSE CHOOSE SQL Choose() Function in SQL Server
Logical Function IIF IIF Логическая функция SQL IIF в Transact-SQL с SQL Server
Математическая функция ABS ABS
Mathematical Function ACOS ACOS
Mathematical Function ASIN ASIN
Mathematical Function ATAN ATAN
Mathematical Function ATN2 ATN2
Математическая функция ПОТОЛОК ПОТОЛОК
Математическая функция COS COS
Mathematical Function COT COT
Mathematical Function DEGREES DEGREES
Mathematical Function EXP EXP
Математическая функция ЭТАЖ ЭТАЖ
Математическая функция LOG LOG
Mathematical Function LOG10 LOG10
Mathematical Function PI PI
Mathematical Function POWER POWER
Mathematical Function RADIANS РАДИАНЫ
Математическая функция RAND RAND
Математическая функция ROUND ROUND
Mathematical Function SIGN SIGN
Mathematical Function SIN SIN
Mathematical Function SQRT SQRT
Математическая функция КВАДРАТ КВАДРАТ
Математическая функция TAN TAN
Metadata Function @@PROCID @@PROCID
Metadata Function APP_NAME APP_NAME
Metadata Function APPLOCK_MODE APPLOCK_MODE
Metadata Function APPLOCK_TEST APPLOCK_TEST
Функция метаданных ASSEMBLYPROPERTY ASSEMBLYPROPERTY
Metadata Function COL_LENGTH COL_LENGTH
Metadata Function COL_NAME COL_NAME
Metadata Function COLUMNPROPERTY COLUMNPROPERTY
Metadata Function DATABASE_PRINCIPAL_ID DATABASE_PRINCIPAL_ID
Функция метаданных DATABASEPROPERTYEX DATABASEPROPERTYEX
Metadata Function DB_ID DB_ID
Metadata Function DB_NAME DB_NAME
Metadata Function FILE_ID FILE_ID
Metadata Function FILE_IDEX FILE_IDEX
Функция метаданных FILE_NAME FILE_NAME
Metadata Function FILEGROUP_ID FILEGROUP_ID
Metadata Function FILEGROUP_NAME FILEGROUP_NAME
Metadata Function FILEGROUPPROPERTY FILEGROUPPROPERTY
Metadata Function FILEPROPERTY FILEPROPERTY
Функция метаданных FULLTEXTCATALOGPROPERTY FULLTEXTCATALOGPROPERTY
Metadata Function FULLTEXTSERVICEPROPERTY FULLTEXTSERVICEPROPERTY
Metadata Function INDEX_COL INDEX_COL
Metadata Function INDEXKEY_PROPERTY INDEXKEY_PROPERTY
Metadata Function ИНДЕКСПРОПЕРТИ ИНДЕКСПРОПЕРТИ
Metadata Function NEXT VALUE FOR NEXT VALUE FOR
Metadata Function OBJECT_DEFINITION OBJECT_DEFINITION
Metadata Function OBJECT_ID OBJECT_ID
Metadata Function OBJECT_NAME OBJECT_NAME
Функция метаданных OBJECT_SCHEMA_NAME OBJECT_SCHEMA_NAME
Metadata Function OBJECTPROPERTY OBJECTPROPERTY
Metadata Function OBJECTPROPERTYEX OBJECTPROPERTYEX
Metadata Function ORIGINAL_DB_NAME ORIGINAL_DB_NAME
Metadata Function PARSENAME PARSENAME Разделить IP-адреса с помощью функции ParseName T-SQL
Metadata Function SCHEMA_ID SCHEMA_ID
Metadata Function SCHEMA_NAME SCHEMA_NAME
Metadata Function SCOPE_IDENTITY SCOPE_IDENTITY
Metadata Function SERVERPROPERTY SERVERPROPERTY
Функция метаданных STATS_DATE STATS_DATE
Metadata Function TYPE_ID TYPE_ID
Metadata Function TYPE_NAME TYPE_NAME
Metadata Function TYPEPROPERTY TYPEPROPERTY
Metadata Function VERSION ВЕРСИЯ
Функция ранжирования DENSE_RANK DENSE_RANK
Функция ранжирования NTILE NTILE
Функция ранжирования Рейтинг Рейнг
Функция рейтинга ROW_NUMBE ROW_NUMBER SQL PRENTUCTION). Пейджинг SQL с использованием функции ROW_NUMBER() SQL Server
Функция репликации PUBLISHINGSERVERNAME PUBLISHINGSERVERNAME
Rowset Function OPENDATASOURCE OPENDATASOURCE
Rowset Function OPENJSON OPENJSON Query JSON Data using OpenJSON on SQL Server
Rowset Function OPENQUERY OPENQUERY Select from Stored Procedure с использованием функции SQL OpenQuery
Функция набора строк OPENROWSET OPENROWSET
Функция Rowset Openxml OpenXML Import XML в SQL Server
Функция безопасности Certencoded Certencoded
Security Function
Security Function 9000

.

CURRENT_USER CURRENT_USER
Функция безопасности DATABASE_PRINCIPAL_ID DATABASE_PRINCIPAL_ID
Security Function HAS_PERMS_BY_NAME HAS_PERMS_BY_NAME
Security Function IS_MEMBER IS_MEMBER
Security Function IS_ROLEMEMBER IS_ROLEMEMBER
Security Function IS_SRVROLEMEMBER IS_SRVROLEMEMBER
Функция безопасности LOGINPROPERTY LOGINPROPERTY
Security Function ORIGINAL_LOGIN ORIGINAL_LOGIN
Security Function PERMISSIONS PERMISSIONS
Security Function PWDCOMPARE PWDCOMPARE
Функция безопасности PWDENCRYPT PWDENCRYPT
Функция безопасности SCHEMA_ID SCHEMA_ID
Security Function SCHEMA_NAME SCHEMA_NAME
Security Function SESSION_USER SESSION_USER
Security Function SUSER_ID SUSER_ID
Функция безопасности SUSER_NAME SUSER_NAME
Функция безопасности SUSER_SID SUSER_SID
Security Function SUSER_SNAME SUSER_SNAME
Security Function sys. fn_builtin_permissions sys.fn_builtin_permissions
Security Function sys.fn_get_audit_file sys .fn_get_audit_file
Функция безопасности sys.fn_my_permissions sys.fn_my_permissions
Security Function SYSTEM_USER SYSTEM_USER
Security Function USER_ID USER_ID
Security Function USER_NAME USER_NAME
String Function ASCII ASCII
Строковая функция CHAR CHAR
Строковая функция CHARINDEX CHARINDEX
String Function CONCAT CONCAT SQL Concat String Function
String Function CONCAT_WS CONCAT_WS
String Function DIFFERENCE DIFFERENCE
Строковая функция ФОРМАТ ФОРМАТ
Строковая функция LEFT LEFT
String Function LEN LEN
String Function LOWER LOWER
String Function LTRIM LTRIM
Строковая функция NCHAR NCHAR
Строковая функция PATINDEX PATINDEX
String Function QUOTENAME QUOTENAME
String Function REPLACE REPLACE
String Function REPLICATE REPLICATE SQL Pad Leading Zeros
String Function REVERSE ОБРАТНЫЙ
Строковая функция ПРАВАЯ ПРАВАЯ
Строковая функция RTRIM RTRIM
String Function SOUNDEX SOUNDEX
String Function SPACE SPACE
String Function STR STR
Строковая функция STRING_AGG STRING_AGG
Строковая функция STRING_ESCAPE STRING_ESCAPE
String Function STRING_SPLIT STRING_SPLIT
String Function STUFF STUFF
String Function SUBSTRING SUBSTRING
String Function TRANSLATE ПЕРЕВОД
Строковая функция TRIM TRIM
Строковая функция UNICODE UNICODE
String Function UPPER UPPER
System Function $PARTITION $PARTITION
System Function @@ERROR @@ ОШИБКА
Системная функция @@IDENTITY @@IDENTITY
Системная функция @@PACK_RECEIVED

0004 @@PACK_RECEIVED

9000

.

.

.

.

System Function @@ROWCOUNT @@ROWCOUNT
System Function @@TRANCOUNT @@TRANCOUNT
System Function BINARY_CHECKSUM BINARY_CHECKSUM
Системная функция КОНТРОЛЬНАЯ СУММА КОНТРОЛЬНАЯ СУММА
Системная функция СЖАТИЕ COMPRESS
System Function CONNECTIONPROPERTY CONNECTIONPROPERTY
System Function CONTEXT_INFO CONTEXT_INFO
System Function CURRENT_REQUEST_ID CURRENT_REQUEST_ID
System Function CURRENT_TRANSACTION_ID CURRENT_TRANSACTION_ID
Системная функция DECOMPRESS DECOMPRESS
System Function ERROR_LINE ERROR_LINE
System Function ERROR_MESSAGE ERROR_MESSAGE
System Function ERROR_NUMBER ERROR_NUMBER
Системная функция ERROR_PROCEDURE ERROR_PROCEDURE
Системная функция ERROR_SEVERITY ERROR_SEVERITY
System Function ERROR_STATE ERROR_STATE
System Function FORMATMESSAGE FORMATMESSAGE
System Function GET_FILESTREAM_TRANSACTION_CONTEXT GET_FILESTREAM_TRANSACTION_CONTEXT
Системная функция GETANSINULL GETANSINULL
System Function HOST_ID HOST_ID
System Function HOST_NAME HOST_NAME
System Function ISNULL ISNULL
System Function ISNUMERIC ISNUMERIC
Системная функция MIN_ACTIVE_ROWVERSION MIN_ACTIVE_ROWVERSION
System Function NEWID NEWID Use SQL NEWID in SQL Functions as SQL Random Generator
System Function NEWSEQUENTIALID NEWSEQUENTIALID
System Function ROWCOUNT_BIG ROWCOUNT_BIG
Системная функция SESSION_CONTEXT SESSION_CONTEXT
Системная функция session_id Session_id
Системная функция XACT_STATE XACT_STATE
СТАТИСТИЧЕСКАЯ ФУНКЦИЯ @@ Connections @@ Connections
9. Sminal9.9000

..9

9

9

9.

9

9

9

9

9

9

9

9.

9

9.

9

9

9. @@CPU_BUSY
Системная статистическая функция @@IDLE @@IDLE
Системная статистическая функция @@ io_busy @@ io_busy
Системная статистическая функция @@ pack_received @@ pack_received
Статовик @@ @received
.
Статистическая функция системы @@PACKET_ERRORS @@PACKET_ERRORS
Системная статистическая функция @@TIMETICKS @@TIMETICKS
System Statistical Function @@TOTAL_ERRORS @@TOTAL_ERRORS
System Statistical Function @@TOTAL_READ @@TOTAL_READ
Системная статистическая функция @@TOTAL_WRITE @@TOTAL_WRITE
Системная статистическая функция fn_virtualfilestats fn_virtualfilestats
Text and Image Function TEXTPTR TEXTPTR
Text and Image Function TEXTVALID TEXTVALID
Trigger Function COLUMNS_UPDATED COLUMNS_UPDATED
Trigger Function EVENTDATA EVENTDATA Предотвратить удаление таблицы с помощью триггера SQL Server DDL | Зарегистрируйте, кто удаляет таблицу в базе данных SQL Server с помощью триггера DDL
Функция триггера TRIGGER_NESTLEVEL TRIGGER_NESTLEVEL
Функция триггера Обновление () Обновление ()

Строки, DateTime, Numbercome Function

92

, DateTime, NUMERCERCORION.

Ниже приведен список встроенных функций String, функций DateTime, числовых функций и функций преобразования.

Строковые функции

Функция

Описание

ASCII Возвращает значение кода ASCII для крайнего левого символа символьного выражения.

СИМВОЛ Возвращает символ для значения ASCII.

ЧАРИНДЕКС Ищет одно символьное выражение в другом символьном выражении и возвращает начальную позицию первого выражения.
СЦЕПИТЬ Объединяет два или более строковых значения в сквозном порядке и возвращает одну строку.
ОСТАВИЛ Возвращает заданное количество символов из строки символов, начиная слева

ЛЕН Возвращает указанное количество символов из строки символов.

НИЖЕ Преобразует строку в нижний регистр.

LTRIM Удаляет все начальные пробелы из строки символов.

НЧАР Возвращает символ Unicode с указанным целочисленным кодом, как определено стандартом Unicode.

ПАТИНДЕКС Возвращает начальную позицию первого вхождения шаблона в заданную строку.

ЗАМЕНЯТЬ Заменяет все вхождения указанной строки другим строковым значением.
ПРАВИЛЬНО Возвращает правую часть строки с указанным количеством символов.

РТРИМ Возвращает строку после усечения всех завершающих пробелов.

ПРОСТРАНСТВО Возвращает строку повторяющихся пробелов.

СИЛ Возвращает символьные данные, преобразованные из числовых данных. Символьные данные выравниваются по правому краю с заданной длиной и десятичной точностью.
ВЕЩИ Вставляет строку в другую строку. Он удаляет указанную длину символов из первой строки в начальной позиции, а затем вставляет вторую строку в первую строку в начальной позиции.
ПОДСТРОКА Возвращает часть символьного, двоичного, текстового или графического выражения.
ВЕРХНИЙ Преобразует строчную строку в прописную.

Функции DateTime

Функция

Описание

CURRENT_TIMESTAMP Возвращает текущую системную дату и время компьютера, на котором установлен экземпляр SQL Server. Часовой пояс не включен.
DATEADD Возвращает новое значение даты и времени, добавляя интервал к указанной части даты указанной даты.
DATEDIFF Возвращает разницу в datepart между двумя заданными датами.
DATENAME Возвращает часть даты в виде строки символов.
DATEPART Возвращает часть даты как целое число
ДЕНЬ Возвращает день как целое число, представляющее часть дня указанной даты.
ПОЛУЧИТЬ ДАТУ Возвращает значение даты и времени, содержащее дату и время компьютера, на котором установлен экземпляр SQL Server. Он не включает часовой пояс.
ПОЛУЧИТЬ ДАТУ Возвращает значение даты и времени в формате UTC (Всемирное координированное время), содержащее дату и время компьютера, на котором установлен экземпляр SQL Server.
МЕСЯЦ Возвращает месяц как целое число, представляющее часть месяца указанной даты.
ГОД Возвращает год как целое число, представляющее часть года указанной даты.
ISDATE Определяет, является ли ввод допустимым значением даты, времени или даты и времени.

Числовые функции

Функция

Описание

АБС Возвращает абсолютное значение числа.
СРЕДНИЙ Возвращает среднее значение выражения/значения столбца.
ПОТОЛОК Возвращает ближайшее целое значение, которое больше или равно указанному десятичному значению.
СЧИТАТЬ Возвращает количество записей в запросе SELECT.
ПОЛ Возвращает наибольшее целочисленное значение, которое меньше или равно числу. Возвращаемое значение имеет тот же тип данных, что и входной параметр.
МАКСИМУМ Возвращает максимальное значение в выражении.
МИН. Возвращает минимальное значение в выражении.
РЭНД Возвращает случайное значение с плавающей запятой, используя необязательное начальное значение.
КРУГЛЫЙ Возвращает числовое выражение, округленное до указанного количества знаков справа от десятичной точки.
ЗНАК Возвращает индикатор знака входного целочисленного выражения.
СУММА Возвращает сумму всех значений или только отдельных значений в выражении. Значения NULL игнорируются.

Функции преобразования

Функция

Описание

В РОЛЯХ Преобразует значение любого типа в указанный тип данных.
КОНВЕРТИРОВАТЬ Преобразует и форматирует значение одного типа данных в другой тип данных.
TRY_CAST Возвращает приведение значения к указанному типу данных, если приведение выполняется успешно, в противном случае возвращает значение null.
TRY_CONVERT Возвращает приведение значения к указанному типу данных, если приведение выполняется успешно, в противном случае возвращает значение null.

Дополнительные функции

Функция

Описание

ИИФ Его можно использовать как условие если-иначе в запросе.
НУЛЕВОЙ Заменяет значение NULL заданным выражением замены.

Imacros | Все права защищены © 2021