Как в 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

Есть 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 — величина второго числа.

Первое число слева, а второе справа
- Вопрос задан более трёх лет назад
- 1526 просмотров
3 комментария
Простой 3 комментария