簡體   English   中英

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

[英]How do I group by month and year when only having a datetime field?

我有一個表模式,它本質上是一堆帶有日期時間字段的事務信息

TRANSACTION (< transactionid >, amount, when)

我需要生成每月總交易數,即SUM(金額),但我對我的分組感到難過。 SQL中的每一行應包含每月總計(因此,對於2009年1月9日,2009年1月9日等等,一行)。 我想我可能必須按代碼生成表,但是想知道是否有辦法使用SQL解決這個問題。

任何幫助,將不勝感激! (使用MySQL 5.3,PHP5)

您需要按提取分組。

SELECT 
    SUM(amount)
FROM 
    transaction
GROUP BY 
    EXTRACT(MONTH FROM when),
    EXTRACT(YEAR FROM when)

如果你需要那些列,那么

SELECT
    EXTRACT(MONTH FROM when) as month, 
    EXTRACT(YEAR FROM when) as year, 
    SUM(amount)
FROM 
    transaction
GROUP BY 
    month,
    year

當然你也可以附加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
    SELECT EXTRACT(YEAR_MONTH FROM when), sum(amount)
      FROM TRANSACTION
  GROUP BY EXTRACT(YEAR_MONTH FROM when)

我總是使用MONTH()和YEAR()......這對我來說似乎有點像哈克,但它有效......

SELECT SUM(amount) FROM yourTable GROUP BY MONTH(date), YEAR(date)

或者反過來呢?

鮑比

我會嘗試這樣的事情:

SELECT
  YEAR(when) AS year,
  MONTH(when) AS month,
  SUM(amount) AS amount
FROM
  TRANSACTION
GROUP BY
  YEAR(when),
  MONTH(when)
ORDER BY
  YEAR(when),
  MONTH(when)

這適用於MS SQL,也適用於MySQL。

我想你想要:

SELECT SUM(amount)
FROM yourTable
GROUP BY CONCAT(YEAR(date), '-', MONTH(date))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM