Как в sql посчитать разницу между суммами
Перейти к содержимому

Как в sql посчитать разницу между суммами

  • автор:

Как в sql посчитать разницу между суммами

Добрый день! Помогите с запросом, пожалуйста.
Есть 3 таблицы. Таблица с товарами. Таблица с данными о выдаче товара. Таблицы с данными о продажах. Нужно найти разницу между суммой выданного и суммой проданного товара, что бы найти остатки.

tabl.jpg
Делаю запрос такого вида:

select sum(tehniki_sklad.kol), sum (cast(sklad.ves as integer)) from tehniki_sklad, sklad where tehniki_sklad.kod_tehnika=33 and tehniki_sklad.kod_sneka=264 and sklad.kod_tehnika=33 and sklad.kod_ingredienta=264 and sklad.del is null and tehniki_sklad.del is null

Белик Виталий 🙂
Регистрация: 23.07.2007
Сообщений: 57,792
Я наверное бы так делал:

select sum(v.Сумма)-(select sum(p.Сумма) from Продажа p where p.kodtovara=v.kodtovara) from Выдача v group by v.kodtovara where not v.kodtovara is null

Ну по крайней мере в представленных в теме условиях.
I’m learning to live.
Пользователь
Регистрация: 03.04.2013
Сообщений: 10

Мне нужно разницу по всем товарам, по одному отдельному технику. Я на основе вашего ответа сделала так.

select sum (v.kol_v) — (Select sum (p.kol_prod) from p, v where p.kod_tovara=v.kod_tovara
and p.tehnik=v_tehnik ) from tovari, p where p.tehnik=33 and p.kod_tovara=tovari.Kod_tovara

Регистрация: 17.11.2010
Сообщений: 19,042
Типа такого, не проверял. С разбивкой по товарам

SELECT t.kod_tovara, COALESCE((SELECT SUM(v.kol_v) FROM Выдача v WHERE v.tehnik=33 AND v.kod_tovara=t.kod_tovara),0)- COALESCE((SELECT SUM(p.kol_prod) FROM Продажи p WHERE p.tehnik=33 AND p.kod_tovara=t.kod_tovara),0) AS Ostat FROM Товары t WHERE EXISTS(SELECT * FROM Выдача v WHERE v.tehnik=33 AND v.kod_tovara=t.kod_tovara) OR EXISTS(SELECT * FROM Продажи p WHERE p.tehnik=33 AND p.kod_tovara=t.kod_tovara)

Будет гораздо удобнее, если приход и расход в одной таблице и различается по некоторому признаку. ИМХО
Тогда бы просто

SELECT kod_tovara, SUM(CASE WHEN priznak=1 THEN koli ELSE 0 END)- SUM(CASE WHEN priznak=2 THEN koli ELSE 0 END) AS Ostat FROM Движение WHERE tehnik=33 GROUP BY kod_tovara

Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 09.08.2013 в 23:43 .

Вычитание 2-х сумм в SQL

table

Есть 2 селект запроса: мне нужно посчитать :

select SUM (amount) from transaction where to_account_id=14; -> сумма всех входящих трансзакций select SUM (amount) from transaction where from_account_id=14; -> сумма всех исходящих трансзакций 

Нужно вычесть обе этих суммы — этот результат должен инсертнуться в поле другой таблицы Я чет не понимаю как это по-SQL’ному написать. P.S. PostgreSQL

Отслеживать

5,821 3 3 золотых знака 15 15 серебряных знаков 24 24 бронзовых знака

задан 31 мая 2018 в 11:43

157 6 6 бронзовых знаков

31 мая 2018 в 11:50

попробуй (sum(amount) over to_account_id) — (sum(amount) over from_account_id)

31 мая 2018 в 12:09

1 ответ 1

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

Все определенно просто:

SELECT OUTPUT.sum - INPUT.sum AS "Разница между суммами" FROM (SELECT SUM(amount) sum FROM transaction WHERE to_account_id=14) OUTPUT, (SELECT SUM(amount) sum FROM transaction WHERE to_account_id=14) INPUT; 

Отслеживать

ответ дан 31 мая 2018 в 12:50

1,887 9 9 серебряных знаков 23 23 бронзовых знака

Как найти разницу в 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.

Как посчитать разница в процентах между двумя числами в MYSQL?

Можно ли сделать запрос в базу MySQL, чтобы получить строки, у которых разница в процентах между двумя числами(числа в двух столбиках в каждой строке) больше или равно определенного процента?

Если да, то как написать такой запрос?

Считать нужно по формуле a > b = ((a-b)/a) * 100
a — значение первого числа; b — величина второго числа.

932323498c.jpg

Первое число слева, а второе справа

  • Вопрос задан более трёх лет назад
  • 1526 просмотров

3 комментария

Простой 3 комментария

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

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