– (вычитание) (Transact-SQL)
Вычитает одно число из другого (оператор арифметического вычитания). Также можно вычесть из даты определенное число дней.
Синтаксис
expression - expression
Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.
Аргументы
выражение
Любое допустимое выражение expression любого числового типа данных, кроме bit. Нельзя использовать с типами данных date, time, datetime2 или datetimeoffset.
Типы результата
Возвращает результат типа данных аргумента с более высоким приоритетом. Дополнительные сведения см. в разделе Приоритет типов данных (Transact-SQL).
Примеры
А. Использование вычитания в инструкции SELECT
Следующий пример вычисляет разницу налоговых ставок между штатом или провинцией с наибольшей налоговой ставкой и штатом или провинцией с наименьшей налоговой ставкой.
Применимо к: SQL Server и База данных SQL.
-- Uses AdventureWorks SELECT MAX(TaxRate) - MIN(TaxRate) AS 'Tax Rate Difference' FROM Sales.SalesTaxRate WHERE StateProvinceID IS NOT NULL; GO
Можно изменить порядок выполнения, используя скобки. Сначала производятся вычисления выражений в скобках. В случае вложенных скобок вычисления начинаются с самого глубокого уровня.
B. Использование вычитания из даты
Следующий пример вычитает указанное число дней из даты datetime .
Применимо к: SQL Server и База данных SQL.
-- Uses the AdventureWorks sample database DECLARE @altstartdate DATETIME; SET @altstartdate = CONVERT(DATETIME, 'January 10, 1900 3:00 AM', 101); SELECT @altstartdate - 1.5 AS 'Subtract Date';
Subtract Date ----------------------- 1900-01-08 15:00:00.000 (1 row(s) affected)
Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)
В. Использование вычитания в инструкции SELECT
В следующем примере вычисляется разница базовых окладов между сотрудником с наибольшим базовым окладом и сотрудником с наименьшей налоговой ставкой из таблицы dimEmployee .
-- Uses AdventureWorks SELECT MAX(BaseRate) - MIN(BaseRate) AS BaseRateDifference FROM DimEmployee;
Пересечение и разность стр. 1
В стандарте языка SQL имеются предложения оператора SELECT для выполнения операций пересечения и разности результатов запросов-операндов. Этими предложениями являются INTERSECT [ALL] (пересечение) и EXCEPT [ALL] (разность), которые работают аналогично предложению UNION . В результирующий набор попадают только те строки, которые присутствуют в обоих запросах (INTERSECT) или только те строки первого запроса, которые отсутствуют во втором (EXCEPT). При этом оба запроса, участвующих в операции, должны иметь одинаковое число столбцов, и соответствующие столбцы должны иметь одинаковые (или неявно приводимые) типы данных. Имена столбцов результирующего набора формируются из заголовков первого запроса.
Если не используется ключевое слово ALL (по умолчанию подразумевается DISTINCT), то при выполнении операции автоматически устраняются дубликаты строк. Если указано ALL, то количество дублированных строк подчиняется следующим правилам (n1 — число дубликатов строк первого запроса, n2 — число дубликатов строк второго запроса):
- INTERSECT ALL : min(n1, n2)
- EXCEPT ALL : n1 — n2, если n1>n2.
Найти корабли, которые присутствуют как в таблице Ships, так и в таблице Outcomes.
Консоль
Выполнить

В реляционной алгебре операция пересечения является коммутативной, поскольку она применима к отношениям с одинаковыми заголовками. Мы и в Язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL можем поменять запросы местами. Вышеприведенное решение даст тот же результат, что и следующее:

Консоль
Выполнить
за исключением заголовка. В первом случае единственный столбец будет иметь заголовок name, а во втором — ship. Поэтому запрос

Консоль
Выполнить
приведет к ошибке:
Invalid column name ‘name’.
Найти разницу между двумя приведенными запросами
а) никакой разницы нет;
б) они возвращают различные значения;
в) они возвращают одни и те же данные, но left join (запрос 1), скорее всего, будет выполняться быстрее;
г) они возвращают одни и те же данные, но подзапрос (запрос 1), скорее всего, будет выполняться быстрее.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Посчитать разницу в годах между двумя датами
Встроенный DATEDIFF работает лениво и на SELECT DATEDIFF(year,’21.11.2011′,’20.11.2012′) ответит.

Найти разницу между двумя таблицами
Есть две заполненные, почти одинаковые, таблицы(не связаны между собой) и одна пустая. Нужно.
Помощь с двумя запросами на SQL, пожалуйста
Таблицы: Таблица Заказчики поля: Номер_заказчика, Фамилия_заказчика, Город, Рейтинг. Таблица.
Найти разницу между двумя изображениями
Есть два изображения. Второе — результат кадрирования первого и наложения некоторого изображения.
Регистрация: 03.01.2013
Сообщений: 184
А сам посмотреть не можешь какой работает быстрее?
И да они возвращают разные значения. SELECT employee.name != SELECT e.name, e.employeeID
174 / 73 / 30
Регистрация: 20.11.2013
Сообщений: 358
StudentMichael, Вообще то возвращать они будут одно и тоже!
JOIN будет быстрее, так как ему не прийдется делать лишнюю выборку, он просто объединит таблицы.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Помогите найти разницу между двумя счетчиками 74hc393
Добрый день, В качестве мелкого заработка занимаюсь сборкой одной безделушки, в которой основным.

Как найти разницу между двумя LPSYSTEMTIME в миллисекундах?
Как найти разницу между двумя LPSYSTEMTIME в миллисекундах?
Функция malloc() — найти разницу между двумя реализациями
Добрый вечер. Скажите, пожалуйста, есть ли разница между записями.

Найти и напечатать наибольшую разницу по модулю между двумя соседними числами
Дано натуральное число N, за ним последовательность из N действительных чисел. Найти и напечатать.
Как найти разницу в sql
Для нахождения разницы между двумя значениями в SQL можно использовать различные функции и операторы, в зависимости от конкретной задачи.
Например, если необходимо найти разницу между двумя датами, можно использовать функцию DATEDIFF() . Эта функция возвращает количество временных единиц (например, дней, месяцев, лет) между двумя датами. Синтаксис функции выглядит следующим образом:
DATEDIFF(interval, startdate, enddate)
где interval — это временная единица, которую необходимо использовать для измерения разницы, startdate — это начальная дата, а enddate — это конечная дата.
Например, чтобы найти разницу между двумя датами в днях, можно использовать следующий запрос:
SELECT DATEDIFF(day, '2022-01-01', '2022-01-15') AS days_diff;
Этот запрос вернет значение 14, что означает, что между 1 января 2022 года и 15 января 2022 года прошло 14 дней.
Если же необходимо найти разницу между двумя числовыми значениями, можно использовать оператор вычитания — . Например, чтобы найти разницу между двумя числами в таблице orders, можно использовать следующий запрос:
SELECT price_paid - price_listed AS price_diff FROM orders;
Этот запрос вернет столбец price_diff, содержащий разницу между значениями в столбцах price_paid и price_listed.
