MySQLで月別に集計を行う。あと日付時刻関数。
2014/05/22
現在進行形でやっているデータ集計系だけど
新たな発見があったのでメモ。
■日付時刻関数
datetime型のカラムがあってフォーマットは
YYYY-MM-DDという形。時間はなし。
で、2012年分を抽出する際に、
WHERE ymd BETWEEN '2012-01-01' AND '2012-12-31'
もしくは、
WHERE ymd >= '2012-01-01' AND ymd <= '2012-12-31'
として書いていた。
が、日付時刻関数というものがあるみたい。
■参考サイト
http://phpjavascriptroom.com/?t=mysql&p=datetime
今回のケースだと、
WHERE YEAR(ymd) = '2012'
とすごくスマートに書ける。
■月別で集計を行う
やりたかったことは年間のデータを月別に分けて
1つのページに表示させたかった。
例えば、
2012年 合計 10000
1月 1021
2月 894
3月 777
....
12月 1509
みたいな感じ。
1ヶ月ずつ12回SQLを打つのか、1年分をSUM使わずに
丸々取得してPHPで処理するのかみたいなこと考えて
しまったけど、ちゃんとやり方があるみたい。
SELECT
code,
DATE_FORMAT(aaaymd,"%Y-%m") AS ymd
FROM table
WHERE code = 111
AND aaaymd BETWEEN "' . $start_ymd . '" AND "' . $end_ymd . '"
GROUP BY ymd
■参考サイト
http://www3441ui.sakura.ne.jp/wordpress/?p=654
●年●月ごとにGROUP BYを行っているみたい。
で、WHERE句で1年縛りにしたら良い。
DATE_FORMATって凄い。
関連記事
- 
					
													
											
				 - 
					
MySQLが起動も再起動もできない際の対応方法
サイトで障害が発生した。FTPやSSH接続は出来るけどサイト自体は表示されない。 ...
 
- 
					
													
											
				 - 
					
MySQLで開始から終了日付内を調べたいとき
等号不等号でもできるけど、BETWEENというのがよさそう。 ■参考サイト ht ...
 
- 
					
													
											
				 - 
					
MySQLで全国の市区町村のデータを入手し、抽出する方法
都道府県と市区町村が連携したセレクトメニューを作成したかった。具体的には大阪府を ...
 
- 
					
													
											
				 - 
					
MySQLのバイナリログ(/var/lib/mysql/binlog)を適切に削除する方法
レンタルしているVPS内のファイルを整理していると「/var/lib/mysql ...
 
- 
					
													
											
				 - 
					
ON DUPLICATE KEY UPDATE後にinsert_idを取得すると結果が0になる
MySQLでON DUPLICATE KEY UPDATE句指定し、データの登録 ...