今回は、統計でよく用いられるランダムサンプリングを、SQLでおこなうためのクエリを紹介する。

ランダムサンプリングとは

ある母集団からランダムに一部の標本を抽出することランダムサンプリングと言い、統計学でよく用いられる手法のこと。

SQLで言いかえると、どの行でも良いのでランダムにいくつかの行が欲しい、というときに使う手法だ。

母集団から1%をサンプリングするクエリ

例えばPostgreSQLで、あるデータテーブルから1%をランダムサンプリングをする場合、以下のクエリを実行すれば良い。

select
	*
from
	access_log
where
	random() < 0.01
;

random()関数は、行ごとに0.0以上1.0未満の値がランダムに返される。
これを利用して、0.01(1%)未満のランダム値が返された行のみを取得することで、ランダムサンプリングを実行している。

この方法は、気づけば簡単だがなかな思いつかないところ。
データ分析においてはかなり役立つのでぜひ覚えておきたい。