[英]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.