タグ: #MySQL
今回はMySQLで知っていると便利な構文その2として、集計時に便利な構文を紹介します。
集計をする際は、主にGROUP BYを多く用いると思いますので、そこに焦点を当てて説明します。
- 説明の準備
- 日付関数
- WITH ROLLUP オプション
- 数値実験(時間測定)
説明の準備
次のようなカラム構成のテーブルがあるとして、以下説明します。
テーブル名: order
* id: int(11)
- product: varchar(32)
- ordered_at: datetime
- price: int(11)
- quantity: int(11)
日付関数
MySQLの組み込み関数には日付操作用の関数が多数用意されてます。
日付関数によるGROUP BY 節の指定も可能で、なかなか使い勝手が良いです。ordered_atという日付のカラムに対し、日付関数を用いて様々な期間での集計が可能となります。
特にYEAR(), MONTH(), DAY(), DAYNAME(), EXTRACT()が便利です。
- YEAR(date): dateの年部分を返す
- MONTH(date): dateの月部分を返す
- DAY(date): dateの日部分を返す
- DAYNAME(date): dateの曜日を返す
- EXTRACT(TYPE FROM date): dateのTYPEで指定した部分を返す(YEAR_MONTHなど)
年毎に売上げを集計したい場合は、以下のようなSQL文で取得できます。
SELECT YEAR(ordered_at) as year, SUM(price * quantity) as total_price FROM order GROUP BY YEAR(ordered_at);
年月毎(2007年8月、2007年9月)に売上げを集計したい場合は、以下のようなSQL文で取得できます。
SELECT EXTRACT(YEAR_MONTH FROM ordered_at) year_month, SUM(price * quantity) as total_price FROM order GROUP BY EXTRACT(YEAR_MONTH FROM ordered_at);
MySQLの知っていると便利な構文(その2)|株式会社 フラッツ
1年前 | 固定リンク | 2010年 11月 25日 | 
