🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

1246閲覧

日付データの月毎の集計

mame708

総合スコア5

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2019/12/26 08:39

前提・実現したいこと

例えば下記のような日付データがあったとし、

1,2019-12-26
2,2019-12-09
3,2019-08-04
4,2018-08-03
5,2018-06-01

下記のような月毎の件数表を出力したいと思っています。

2019-06,1
2019-07,0
2019-08,2
2019-09,0
2019-10,0
2019-11,0
2019-12,2

データが無い箇所は0で補完する必要があるため、最初に下記のように仮テーブルを作る必要があるかと思います。
下記だと開始が2019-05-01から7か月分のデータと固定になってしまっていますが、
これをデータの最小・最大で求める方法はありますでしょうか?

SELECT date_format(date_add('2019-05-01', interval td.generate_series month), '%Y-%m') as d FROM ( SELECT 0 generate_series FROM DUAL WHERE (@num:=1-1)*0 UNION ALL SELECT @num:=@num+1 FROM `information_schema`.COLUMNS LIMIT 7 ) as td

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

最大-最小の間隔で必要な行は計算できると思います。
【MySQL】日付時刻関数を使用して、日付や時刻の差分を取得する
これをlimitとして与えれば良さそうですけど、limitに対しては定数でないと駄目みたいなので、
プロシージャやサブクエリでLIMIT句を使う場合の注意点

row_number()で行番号を作成して、where条件で限定すれば良さそうです。
但し、row_number()はMySql8.0以降でないと使用できません。
MySQLのSELECT結果に行番号を振る。

投稿2019/12/26 09:42

sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mame708

2020/01/06 01:58

ご回答ありがとうございます。 実際にやりたいことはもう少し複雑で、定数定義も必要であれば プログラムを組んでSQL呼び出しした方がよいかなと思ってきました。 載せていただいたサイトを参考にいたします。
guest

0

MySQLのdatetime型のカラムから日付部分のみを取得する から年月のみとレコード件数を取得するところが参考になるかと。

CREATE TABLE は質問に提示できた方が適切なコメントが付き易いかと。

投稿2019/12/26 09:18

Orlofsky

総合スコア16417

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mame708

2020/01/06 02:00

ご回答ありがとうございます。 実際に試せるものがあった方がコメント頂きやすいですよね。 次回から載せるようにいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問