LoginSignup
6
3

More than 5 years have passed since last update.

【小ネタ】PostgreSQLで最も出現する値(最頻値・モード)を取得する

Last updated at Posted at 2015-06-04

PostgreSQL で最も出現する値(最頻値・モード)を取得する方法

少し大きめのデータベースで、多数決で集約してくれと、気軽に鬼のような要望が来た。

データベースで再頻値を取得する方法は、これまでHAVING句とサブクエリを使用するなど、なかなか見かけがエクセレントにならなかった。
PostgreSQL9.4では集約関数も大幅に強化されており、最頻値も簡単に取得できるようになった。

mode.sql
SELECT mode() WIHTHIN GROUP (ORDER BY カラム名) AS お好きな名前 FROM テーブル名

およそSQLとは思えない書き方だけど、ちゃんと出る。
たぶん、次回使う機会には確実に忘れると思うので、ここにメモ。

カラム名の代わりに計算式を書いても良い。
そこは普通のORDER BYと同じ。

しかし、ちょっと遅い。
インデックスと併用すると多少は速くなるのかもしれないが。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3