裏MySQL クエリー入門 (24) 基礎編13 GROUP BY

 今更GROUP BY?というのはごもっともな話です。普通のGROUP BYはマニュアルを見ていただくとして、ここでは裏MySQL クエリー入門的なGROUP BYのサンプル例をいくつか紹介していきましょう。

  • 日毎に集計するには
SELECT
   DATE(access_time),
   count(access_id)  "アクセス数"
 FROM
   access 
 GROUP BY 
   DATE(access_time)
  • 月毎に集計するには
SELECT
   DATE_FORMAT(access_time,'%Y/%m'),
   sum(carrier_id=1) "DoCoMo",
   sum(carrier_id=2) "au",
   sum(carrier_id=3) "SoftBank"
   count(access_id)  "全体"
 FROM
   access 
 GROUP BY 
   DATE_FORMAT(access_time,'%Y/%m')
  • 5分毎、10分毎、15分毎と集計するFX的な用途でGROUP BYするには?

サンプルは30分毎です。

SELECT
  FROM_UNIXTIME(
    TRUNCATE(UNIX_TIMESTAMP(user_created_time)/1800,0)
  *1800),
  max(buy) ,min(buy) ,avg(buy),
  max(sell),min(sell),avg(sell)
 FROM
   trade 
 GROUP BY 
   TRUNCATE(UNIX_TIMESTAMP(trade_time)/1800,0)
  • 設計が間違っちゃっているテーブル構造を修正する為のGROUP BY アレコレ

追記

  • 8/4 日毎の集計が月毎の集計となっていたので修正、またクエリーにも誤りがあったので修正。ついでに日毎の集計を追加