1

次のように4列のMySQLテーブルがあります。

TransactionID | Item | Amount | Date
------------------------------------
              |      |        |
              |      |        |

エントリがたくさんありますが、実行したいのは、各時点での総利益/損失のリストを返すクエリを作成することです。

次のトランザクションがあったと想像してください。

 Bought item for 5
 Sold item for 15
 Bought item for 5
 Sold item for 15

だから私はそれがこのようなものを返すことを望みます。

Profit/Loss | Date
------------------
-5          | 20-10-12
10          | 21-10-12
5           | 22-10-12
20          | 23-10-12

これはMySQLクエリで可能ですか?

4

3 に答える 3

2
SELECT SUM(Amount) AS ProfitOrLoss FROM TableName GROUP BY Date
于 2012-10-11T22:03:59.667 に答える
1

Date期待される結果に示すようにそれが保存されていると仮定すると、これは機能するはずです。

SELECT
   SUM(Amount) AS "Profit/Loss",
   Date
FROM your_table
GROUP BY(Date)

それ以外の場合、idDateはタイプですDATEDATETIMEまたは、次のTIMESTAMPようにすることができます。

SELECT
   SUM(Amount) AS "Profit/Loss",
   DATE_FORMAT(Date, '%d-%m-%y') AS Date
FROM your_table
GROUP BY(DATE_FORMAT(Date, '%d-%m-%y'))

参照:

編集(OPのコメントの後)

ここで計算SUMを達成するには、良いヒントがあります。

SET @csum := 0;
SELECT
   (@csum := @csum + x.ProfitLoss) as ProfitLoss,
   x.Date
FROM
(
   SELECT
      SUM(Amount) AS ProfitLoss,
      DATE_FORMAT(Date, '%d-%m-%y') AS Date
   FROM your_table
   GROUP BY(DATE_FORMAT(Date, '%d-%m-%y'))
) x
order by x.Date;

基本的に、現在の合計を変数(@csum)に格納し、グループ化されたトランザクションの各行について、日次の残高だけ増やします。

于 2012-10-11T22:03:19.797 に答える
1
SELECT SUM(Amount) FROM TableName GROUP BY Date
于 2012-10-11T22:04:27.783 に答える