Я работаю со следующей структурой таблицы в MySQL: < /p>
SELECT
sale_id,
unit_id,
quantity_sold,
total_price,
bought_price,
paid_amount,
tax_percentage,
sold_by,
receipt_id,
customer_id,
shop_id,
payment_method,
sale_date
FROM sales;
< /code>
Мне нужно рассчитать непогашенную сумму для ежедневных, ежемесячных и годовых периодов. Расчет для выявления заключается в следующем: < /p>
Неоплачивающая сумма для продажи рассчитывается по:
otal_price для этой продажи - PALE_AMOUNT для этой продажи.
Однако Проблема заключается в том, что для каждой receipt_id я хочу подсчитать платный_амант только один раз. Если несколько строк имеют одинаковую chestipt_id, платный_амаунт должен быть вычтен только один раз для этого receipt_id. < /P>
То, что я попробовал:
Я попытался вычислять в обращении путем группировки с помощью receipt_id и с использованием различия, чтобы убедиться, что платный_амонт рассматривается только один раз на petipt_id, но я все еще получаю неверные результаты. < /p>
Вот запрос, который я пробовал: < /p>
SELECT
COALESCE(FORMAT(SUM(CASE
WHEN DATE(s.sale_date) = CURDATE() THEN s.total_price
ELSE 0
END), 2), '0.00') AS todays_income,
COALESCE(FORMAT(SUM(CASE
WHEN YEAR(s.sale_date) = ? AND MONTH(s.sale_date) = MONTH(CURDATE()) THEN s.total_price
ELSE 0
END), 2), '0.00') AS monthly_income,
COALESCE(FORMAT(SUM(CASE
WHEN YEAR(s.sale_date) = ? THEN s.total_price
ELSE 0
END), 2), '0.00') AS yearly_income,
-- Calculate profit correctly (bought_price * quantity_sold)
COALESCE(FORMAT(SUM(CASE
WHEN DATE(s.sale_date) = CURDATE() THEN (s.total_price - (s.bought_price * s.quantity_sold))
ELSE 0
END), 2), '0.00') AS todays_profit,
COALESCE(FORMAT(SUM(CASE
WHEN YEAR(s.sale_date) = ? AND MONTH(s.sale_date) = MONTH(CURDATE()) THEN (s.total_price - (s.bought_price * s.quantity_sold))
ELSE 0
END), 2), '0.00') AS monthly_profit,
COALESCE(FORMAT(SUM(CASE
WHEN YEAR(s.sale_date) = ? THEN (s.total_price - (s.bought_price * s.quantity_sold))
ELSE 0
END), 2), '0.00') AS yearly_profit,
-- Calculate outstanding amount (total_price - paid_amount) correctly by considering distinct receipt_id
COALESCE(FORMAT(SUM(CASE
WHEN DATE(s.sale_date) = CURDATE() THEN (s.total_price -
(SELECT COALESCE(SUM(paid_amount), 0)
FROM sales WHERE receipt_id = s.receipt_id GROUP BY receipt_id))
ELSE 0
END), 2), '0.00') AS todays_outstanding,
COALESCE(FORMAT(SUM(CASE
WHEN YEAR(s.sale_date) = ? AND MONTH(s.sale_date) = MONTH(CURDATE()) THEN (s.total_price -
(SELECT COALESCE(SUM(paid_amount), 0)
FROM sales WHERE receipt_id = s.receipt_id GROUP BY receipt_id))
ELSE 0
END), 2), '0.00') AS monthly_outstanding,
COALESCE(FORMAT(SUM(CASE
WHEN YEAR(s.sale_date) = ? THEN (s.total_price -
(SELECT COALESCE(SUM(paid_amount), 0)
FROM sales WHERE receipt_id = s.receipt_id GROUP BY receipt_id))
ELSE 0
END), 2), '0.00') AS yearly_outstanding
FROM sales s
< /code>
Что я ищу:
a mysql Query, который правильно рассчитывает непогашенную p>
Вот тест, работающий на https://onecompiler.com/mysql/4392g6rj5
Что мне нужно в соответствии с данными, которые у меня есть, - это исход быть "15 933"
Подробнее здесь: https://stackoverflow.com/questions/794 ... receipt-id
Как вычислять ежедневно, ежемесячно и ежегодно вдрушится в MySQL с помощью receipt_id, учитывая платный_амаунт только од ⇐ MySql
Форум по Mysql
1739520916
Anonymous
Я работаю со следующей структурой таблицы в MySQL: < /p>
SELECT
sale_id,
unit_id,
quantity_sold,
total_price,
bought_price,
paid_amount,
tax_percentage,
sold_by,
receipt_id,
customer_id,
shop_id,
payment_method,
sale_date
FROM sales;
< /code>
Мне нужно рассчитать непогашенную сумму для ежедневных, ежемесячных и годовых периодов. Расчет для выявления заключается в следующем: < /p>
Неоплачивающая сумма для продажи рассчитывается по:
otal_price для этой продажи - PALE_AMOUNT для этой продажи.
Однако Проблема заключается в том, что для каждой receipt_id я хочу подсчитать платный_амант только один раз. Если несколько строк имеют одинаковую chestipt_id, платный_амаунт должен быть вычтен только один раз для этого receipt_id. < /P>
То, что я попробовал:
Я попытался вычислять в обращении путем группировки с помощью receipt_id и с использованием различия, чтобы убедиться, что платный_амонт рассматривается только один раз на petipt_id, но я все еще получаю неверные результаты. < /p>
Вот запрос, который я пробовал: < /p>
SELECT
COALESCE(FORMAT(SUM(CASE
WHEN DATE(s.sale_date) = CURDATE() THEN s.total_price
ELSE 0
END), 2), '0.00') AS todays_income,
COALESCE(FORMAT(SUM(CASE
WHEN YEAR(s.sale_date) = ? AND MONTH(s.sale_date) = MONTH(CURDATE()) THEN s.total_price
ELSE 0
END), 2), '0.00') AS monthly_income,
COALESCE(FORMAT(SUM(CASE
WHEN YEAR(s.sale_date) = ? THEN s.total_price
ELSE 0
END), 2), '0.00') AS yearly_income,
-- Calculate profit correctly (bought_price * quantity_sold)
COALESCE(FORMAT(SUM(CASE
WHEN DATE(s.sale_date) = CURDATE() THEN (s.total_price - (s.bought_price * s.quantity_sold))
ELSE 0
END), 2), '0.00') AS todays_profit,
COALESCE(FORMAT(SUM(CASE
WHEN YEAR(s.sale_date) = ? AND MONTH(s.sale_date) = MONTH(CURDATE()) THEN (s.total_price - (s.bought_price * s.quantity_sold))
ELSE 0
END), 2), '0.00') AS monthly_profit,
COALESCE(FORMAT(SUM(CASE
WHEN YEAR(s.sale_date) = ? THEN (s.total_price - (s.bought_price * s.quantity_sold))
ELSE 0
END), 2), '0.00') AS yearly_profit,
-- Calculate outstanding amount (total_price - paid_amount) correctly by considering distinct receipt_id
COALESCE(FORMAT(SUM(CASE
WHEN DATE(s.sale_date) = CURDATE() THEN (s.total_price -
(SELECT COALESCE(SUM(paid_amount), 0)
FROM sales WHERE receipt_id = s.receipt_id GROUP BY receipt_id))
ELSE 0
END), 2), '0.00') AS todays_outstanding,
COALESCE(FORMAT(SUM(CASE
WHEN YEAR(s.sale_date) = ? AND MONTH(s.sale_date) = MONTH(CURDATE()) THEN (s.total_price -
(SELECT COALESCE(SUM(paid_amount), 0)
FROM sales WHERE receipt_id = s.receipt_id GROUP BY receipt_id))
ELSE 0
END), 2), '0.00') AS monthly_outstanding,
COALESCE(FORMAT(SUM(CASE
WHEN YEAR(s.sale_date) = ? THEN (s.total_price -
(SELECT COALESCE(SUM(paid_amount), 0)
FROM sales WHERE receipt_id = s.receipt_id GROUP BY receipt_id))
ELSE 0
END), 2), '0.00') AS yearly_outstanding
FROM sales s
< /code>
Что я ищу:
a mysql Query, который правильно рассчитывает непогашенную p>
Вот тест, работающий на https://onecompiler.com/mysql/4392g6rj5
Что мне нужно в соответствии с данными, которые у меня есть, - это исход быть "15 933"
Подробнее здесь: [url]https://stackoverflow.com/questions/79438717/how-to-calculate-daily-monthly-and-yearly-outstanding-in-mysql-by-receipt-id[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия