[MySQL] 数値を範囲で区切って集計

公開

スポンサーリンク

MySQLで数値の範囲で区切って集計する方法のメモ。

具体的にどういうことかというと、例えば以下のようなデータから、100円台、200円台のような大台で区切って集計する方法についての解説です。100円台は1個、200円台は2個という風に10以下の桁を切捨てて100円台で集計したいわけですね。

id | item      | price
---|-----------|-------
 1 | Apple     | 120
 2 | Pineapple | 299
 3 | Orange    | 66 
 4 | Melon     | 450
 5 | Orange    | 77
 6 | Peach     | 250

こういう場合、MySQLではTRUNCATE関数を使います。テーブルをカラにするTRUNCATE構文と紛らわしいですが、MySQLでは任意の桁数で切り捨てる関数がTRUNCATEという名前になっています。

上記のテーブルから100円単位で集計するならSQL文は以下の通り。

SELECT
  TRUNCATE(price,-2) AS price, COUNT(id) AS cnt
FROM
  table_name
GROUP BY
  price
ORDER BY
  price

スポンサーリンク


Comment