Php 只有datetime字段时,如何按月份和年份分组?
我有一个表模式,它本质上是一组带有datetime字段的事务信息Php 只有datetime字段时,如何按月份和年份分组?,php,mysql,sql,Php,Mysql,Sql,我有一个表模式,它本质上是一组带有datetime字段的事务信息 TRANSACTION (< transactionid >, amount, when) 交易(,金额,时间) 我需要生成每月的交易总数,即SUM(amount),但我被分组依据的内容难倒了。SQL中的每一行都应该包含每月的总数(因此,09年1月、09年2月、2010年1月等各有一行)。我想我可能必须通过代码生成表,但我想知道是否有办法使用SQL解决这个问题 任何帮助都将不胜感激!(使用MySQL 5.3,PHP
TRANSACTION (< transactionid >, amount, when)
交易(,金额,时间)
我需要生成每月的交易总数,即SUM(amount),但我被分组依据的内容难倒了。SQL中的每一行都应该包含每月的总数(因此,09年1月、09年2月、2010年1月等各有一行)。我想我可能必须通过代码生成表,但我想知道是否有办法使用SQL解决这个问题
任何帮助都将不胜感激!(使用MySQL 5.3,PHP5)我一直使用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
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
当然,您可以按追加订单,也可以使用短名称:
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 SUM(amount)
FROM yourTable
GROUP BY CONCAT(YEAR(date), '-', MONTH(date))
请注意,对于新手,当
是表列名而不是MySQL函数时。
SELECT SUM(amount)
FROM yourTable
GROUP BY CONCAT(YEAR(date), '-', MONTH(date))