Рассчитайте ежедневно, ежемесячно и ежегодно в обращении в MySQL с помощью chestipt_id, учитывая PAY_AMOUNT только один MySql

Форум по Mysql
Ответить
Anonymous
 Рассчитайте ежедневно, ежемесячно и ежегодно в обращении в MySQL с помощью chestipt_id, учитывая PAY_AMOUNT только один

Сообщение 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>
то, что я попробовал: < /strong>

Я попытался вычислять в обращении путем группировки с помощью receipt_id и используя disful для обеспечения платного_аминга, рассматривается только один раз на 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>
Что я ищу: < /strong>

a mysql Query, который правильно рассчитывает непогашенную ежедневно, ежемесячные и годовые периоды. В соответствии с данными, которые у меня есть, является вынесением подразделения, которые должны быть "15 933".

Подробнее здесь: https://stackoverflow.com/questions/794 ... id-conside
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»