如果只有datetime字段,我如何按月和年分组?

Ext*_*kun 8 php mysql sql

我有一个表模式,它本质上是一堆带有日期时间字段的事务信息

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)


man*_*nji 5

    SELECT EXTRACT(YEAR_MONTH FROM when), sum(amount)
      FROM TRANSACTION
  GROUP BY EXTRACT(YEAR_MONTH FROM when)
Run Code Online (Sandbox Code Playgroud)

  • 关于MySQL的问题! (4认同)