我有一个表模式,它本质上是一堆带有日期时间字段的事务信息
TRANSACTION (< transactionid >, amount, when)
Run Code Online (Sandbox Code Playgroud)
我需要生成每月总交易数,即SUM(金额),但我对我的分组感到难过.SQL中的每一行应包含月总数(因此,对于2009年1月9日,2009年1月9日等等,一行).我想我可能必须按代码生成表,但是想知道是否有办法使用SQL解决这个问题.
任何帮助,将不胜感激!(使用MySQL 5.3,PHP5)
pro*_*ick 19
您需要按提取分组.
SELECT
SUM(amount)
FROM
transaction
GROUP BY
EXTRACT(MONTH FROM when),
EXTRACT(YEAR FROM when)
Run Code Online (Sandbox Code Playgroud)
如果你需要那些列,那么
SELECT
EXTRACT(MONTH FROM when) as month,
EXTRACT(YEAR FROM when) as year,
SUM(amount)
FROM
transaction
GROUP BY
month,
year
Run Code Online (Sandbox Code Playgroud)
当然你也可以附加ORDER BY和使用短名称:
SELECT
EXTRACT(MONTH FROM when) as month,
EXTRACT(YEAR FROM when) as year,
SUM(amount)
FROM
transaction
GROUP BY
month,
year
ORDER BY
year DESC,
month DESC
Run Code Online (Sandbox Code Playgroud)
SELECT EXTRACT(YEAR_MONTH FROM when), sum(amount)
FROM TRANSACTION
GROUP BY EXTRACT(YEAR_MONTH FROM when)
Run Code Online (Sandbox Code Playgroud)