created: 2021-12-08T06:28:24.000Z

MySQLで月毎にGROUP BYする

modified は変更されたら更新されるカラム。 以下のような表現で 202107 といった文字列を作ることができる。

CONCAT(YEAR(modified), LPAD(MONTH(modified), 2, '0'))

GROUP BY YEAR(modified), MONTH(modified) でもいいが、可視化のライブラリにて使うときに1カラムの方が具合がいいので LPAD などを使って1カラムの文字列にしている。

更新されたレコードを月毎で計上

SELECT CONCAT(YEAR(modified), LPAD(MONTH(modified), 2, '0')),
  COUNT(1)
FROM t
GROUP BY CONCAT(YEAR(modified), LPAD(MONTH(modified), 2, '0'))
ORDER BY CONCAT(YEAR(modified), LPAD(MONTH(modified), 2, '0'))

参考

詳説 データベース ―ストレージエンジンと分散データシステムの仕組み
[ad] 詳説 データベース ―ストレージエンジンと分散データシステムの仕組み
Alex Petrov, 小林 隆浩 (単行本(ソフトカバー))