Получите оплаченную сумму наличности, сгруппированную по дням - PullRequest
0 голосов
/ 03 февраля 2011

У меня есть таблица с именем orders, эта таблица содержит всю необходимую нам информацию.

Я просто перечислю столбцы, которые нам нужны для запроса:

  • purchase_price (всегда содержит общую сумму, уплаченную за заказ)
  • pay_method ((int), когда 1 означает, что полная сумма purchase_price была оплачена наличными, когда 3 означает, что purchase_price была выплачена только частично наличными, другие значения означают другие средства оплаты, так что игнорировать их.)
  • cash_paid (если pay_method равно 3, в этом столбце указана сумма, уплаченная за заказ, обратите внимание, что это не общая стоимость, а только часть purchase_price, которая была оплачена в наличными. Если pay_method НЕ 3, значение этого поля равно 0
  • date ((datetime) просто дата + время размещения заказа)

Идея довольно проста. нам нужно получить общую сумму выплаченных денежных средств, сгруппированных по дням. Но мы нашли это довольно трудной задачей.

PS: я пытаюсь решить эту проблему в PHP с использованием MySQL, поэтому можно использовать несколько запросов и / или использовать некоторый сценарий PHP.

Ответы [ 4 ]

3 голосов
/ 03 февраля 2011

Использование MySQL IF-функция :

Если pay_method равен 1, заполните поле purchase_price. В противном случае возьмите поле cash_paid.

SELECT DATE(`date`), SUM(IF(pay_method=1,purchase_price,cash_paid)) 
FROM yourtable
/*WHERE pay_method IN (1,3) -- if you only want those */
GROUP BY DATE(`date`)
2 голосов
/ 03 февраля 2011

Вам нужно использовать GROUP BY DAY(date)

2 голосов
/ 03 февраля 2011

В одном запросе вы можете попробовать вот так:

select DATE(date), sum(case when pay_method = 1 then purchase_price else cash_paid end) from orders group by DATE(date)

кстати.не уверен, что в mysql вы можете использовать "case" внутри функции sum.

1 голос
/ 03 февраля 2011
SELECT *, IF(`pay_method`=1,SUM(`cash_paid`),0) AS Cash_Paid FROM orders o
GROUP BY DATE(`date`)

Можете ли вы попробовать это. это даст вам общую сумму уплаченных денежных средств ... за частично оплаченные денежные средства вы можете создать еще один запрос и добавить их оба ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...