Перейти к содержимому

Как в sql складывать данные из разных столбцов

  • автор:

+ (сложение) (Transact-SQL)

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

Синтаксис

expression + expression 

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

выражение
Любое допустимое выражение expression одного из типов данных числовой категории, кроме типа данных bit. Нельзя использовать с типами данных date, time, datetime2 или datetimeoffset.

Типы результата

Возвращает результат типа данных аргумента с более высоким приоритетом. Дополнительные сведения см. в разделе Приоритет типов данных (Transact-SQL).

Примеры

А. Использование оператора сложения для вычисления общего числа часов отсутствия на рабочем месте для каждого сотрудника.

В этом примере приведен расчет общего времени отсутствия на рабочем месте (в часах) для каждого сотрудника путем сложения отпускных часов и часов отсутствия по болезни.

-- Uses AdventureWorks SELECT p.FirstName, p.LastName, VacationHours, SickLeaveHours, VacationHours + SickLeaveHours AS 'Total Hours Away' FROM HumanResources.Employee AS e JOIN Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID ORDER BY 'Total Hours Away' ASC; GO 

B. Использование оператора сложения для добавления дней к значениям даты и часа

В этом примере число дней прибавляется к дате типа datetime .

SET NOCOUNT ON DECLARE @startdate DATETIME, @adddays INT; SET @startdate = 'January 10, 1900 12:00 AM'; SET @adddays = 5; SET NOCOUNT OFF; SELECT @startdate + 1.25 AS 'Start Date', @startdate + @adddays AS 'Add Date'; 
Start Date Add Date --------------------------- --------------------------- 1900-01-11 06:00:00.000 1900-01-15 00:00:00.000 (1 row(s) affected) 

C. Сложение данных символьного и целочисленного типов

В приведенном ниже примере складываются значения типа int и символьного типа путем преобразования данных символьного типа в тип int. Если в строке типа char есть недопустимый символ, Transact-SQL возвращает ошибку.

DECLARE @addvalue INT; SET @addvalue = 15; SELECT '125127' + @addvalue; 
----------------------- 125142 (1 row(s) affected) 

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

Г. Использование оператора сложения для вычисления общего числа часов отсутствия на рабочем месте для каждого сотрудника

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

-- Uses AdventureWorks SELECT FirstName, LastName, VacationHours, SickLeaveHours, VacationHours + SickLeaveHours AS TotalHoursAway FROM DimEmployee ORDER BY TotalHoursAway ASC; 

SQL — Урок 11. Итоговые функции, вычисляемые столбцы и представления

Теперь, мы хотим узнать, на какую сумму нам привез товар поставщик «Дом печати» (id=2). Составить такой запрос не так просто. Давайте поразмышляем, как его составить:

1. Сначала надо из таблицы Поставки (incoming) выбрать идентификаторы (id_incoming) тех поставок, которые осуществлялись поставщиком «Дом печати» (id=2):

SELECT id_incoming FROM incoming WHERE id_vendor=2;

2. Теперь из таблицы Журнал поставок (magazine_incoming) надо выбрать товары (id_product) и их количества (quantity), которые осуществлялись в найденных в пункте 1 поставках. То есть запрос из пункта 1 становится вложенным:

SELECT id_product, quantity FROM magazine_incoming WHERE id_incoming=(SELECT id_incoming FROM incoming WHERE id_vendor=2);

3. Теперь нам надо добавить в результирующую таблицу цены на найденные товары, которые хранятся в таблице Цены (prices). То есть нам понадобится объединение таблиц Журнал поставок (magazine_incoming) и Цены (prices) по столбцу id_product:

SELECT magazine_incoming.id_product, magazine_incoming.quantity, prices.price FROM magazine_incoming, prices WHERE magazine_incoming.id_product= prices.id_product AND id_incoming= (SELECT id_incoming FROM incoming WHERE id_vendor=2);

4. В получившейся таблице явно не хватает столбца Сумма, то есть вычисляемого столбца . Возможность создания таких столбцов предусмотрена в MySQL. Для этого надо лишь указать в запросе имя вычисляемого столбца и что он должен вычислять. В нашем примере такой столбец будет называться summa, а вычислять он будет произведение столбцов quantity и price. Название нового столбца отделяется словом AS:

SELECT magazine_incoming.id_product, magazine_incoming.quantity, prices.price, magazine_incoming.quantity*prices.price AS summa FROM magazine_incoming, prices WHERE magazine_incoming.id_product= prices.id_product AND id_incoming= (SELECT id_incoming FROM incoming WHERE id_vendor=2);

5. Отлично, нам осталось лишь просуммировать столбец summa и наконец-то узнаем, на какую сумму нам привез товар поставщик «Дом печати». Синтаксис для использования функции SUM() следущий:

SELECT SUM(имя_столбца) FROM имя_таблицы;

Имя столбца нам известно — summa, а вот имени таблицы у нас нет, так как она является результатом запроса. Что же делать? Для таких случаев в MySQL существуют Представления . Представление — это запрос на выборку, которому присваивается уникальное имя и который можно сохранять в базе данных, для последующего использования.

Синтаксис создания представления следующий:

CREATE VIEW имя_представления AS запрос;
Давайте сохраним наш запрос, как представление с именем report_vendor:

CREATE VIEW report_vendor AS SELECT magazine_incoming.id_product, magazine_incoming.quantity, prices.price, magazine_incoming.quantity*prices.price AS summa FROM magazine_incoming, prices WHERE magazine_incoming.id_product= prices.id_product AND id_incoming= (SELECT id_incoming FROM incoming WHERE id_vendor=2);

6. Вот теперь можно использовать итоговую функцию SUM() :
SELECT SUM(summa) FROM report_vendor;

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

Вычисляемые поля (столбцы)

На примере мы рассмотрели сегодня математическое вычисляемое поле. Здесь хотелось бы добавить, что использовать можно не только операцию умножения (*), но и вычитание (-), и сложение (+), и деление (/). Синтаксис следующий:

SELECT имя_столбца_1, имя_столбца_2, имя_столбца_1*имя_столбца_2 AS имя_вычисляемого_столбца FROM имя_таблицы;

Второй нюанс — ключевое слово AS, мы его использовали для задания имени вычисляемого столбца. На самом деле с помощью этого ключевого слова задаются псевдонимы для любых столбцов. Зачем это нужно? Для сокращения и читаемости кода. Например, наше представление могло бы выглядеть так:

CREATE VIEW report_vendor AS SELECT A.id_product, A.quantity, B.price, A.quantity*B.price AS summa FROM magazine_incoming AS A, prices AS B WHERE A.id_product= B.id_product AND id_incoming= (SELECT id_incoming FROM incoming WHERE id_vendor=2);

Согласитесь, что так гораздо короче и понятнее.

Представления

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

Но следует помнить, что представления — это не таблицы, то есть они не хранят данные, а лишь извлекают их из других таблиц. Отсюда, во-первых, при изменении данных в таблицах, результаты представления так же будут меняться. А во-вторых, при запросе к представлению происходит поиск необходимых данных, то есть производительность СУБД снижается. Поэтому злоупотреблять ими не стоит.

Научись программировать на Python прямо сейчас!

  • Научись программировать на Python прямо сейчас
  • Бесплатный курс

Если этот сайт оказался вам полезен, пожалуйста, посмотрите другие наши статьи и разделы.

Как объединить два столбца в один sql

Для объединения двух столбцов воспользуйтесь такой командой:

08 ноября 2022

Eto pri select, a esli ya hochu eto zapisat’ v stolbec?

Есть что добавить? Зарегистрируйтесь

Курсы по программированию на Хекслете

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки

Похожие вопросы

26 октября 2021
26 октября 2021
26 октября 2021
26 октября 2021

  • 8 800 100 22 47 бесплатно по РФ
  • +7 495 085 28 38 бесплатно по Москве

Направления

  • Курсы «Backend-разработка»
  • Курсы «Frontend-разработка»
  • Курсы «Создание сайтов»
  • Курсы «Тестирование»
  • Курсы «Аналитика данных»
  • Интенсивные курсы
  • Курсы DevOps
  • Курсы «Веб-разработка»
  • Курсы «Математика для программистов»
  • Все курсы

О Хекслете

  • О нас
  • Карьера в Хекслете
  • Хекслет Колледж

ООО «Хекслет Рус» 432071, г. Ульяновск, пр-т Нариманова, дом 1Г, оф. 23 ОГРН 1217300010476

  • Справка
  • Вопросы и ответы
  • Сообщество
  • Дополнительно
  • Условия использования
  • Соглашение об обработке ПД
  • Оферта
  • Акции

Как сделать сумму двух столбцов в SQL и вывести новый столбец с результатами этих сумм

Students

В этой таблице мне необходимо добавить новый столбик с результатами суммы двух столбцов Math и Rus для каждой строчки. Как это сделать?

Отслеживать

задан 26 апр 2020 в 12:04

voooooooojyay voooooooojyay

1 1 1 золотой знак 1 1 серебряный знак 1 1 бронзовый знак

Обычно все пишут сумму всего столбца. а мне надо для каждой строчки по отдельности

26 апр 2020 в 12:32

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

SELECT *, (Math + Rus) as summ FROM tabl; 

Если вы имеете ввиду столбик, который сам будет рассчитываться, вот пример использования виртуального столбца(был ответ где-то, но я его потерял):

create table t ( num1 int, num2 int, sum int as (num1 + num2)) ; insert into t (num1, num2) values (1, 2); select * from t; 

Выведет 1(num1), 2(num2), 3(sum)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *