LoginSignup
0
0

SQL tips 3: 連番での重複削除

Posted at

特定の観察単位における重複を取り除いた結果を取り出すクエリのご紹介です。
例えば、個人ごとに年に一度だけ発生するイベントのデータを作りたいが、データ上にはエラーや特殊なケースで年に二度以上、発生しうる場合を対処したいときです。

■処理イメージ
image.png

■クエリ

WITH event_prep AS(
    SELECT 
        ID
        , date
        , X1
        , ROW_NUMBER() OVER(PARTITION BY ID ORDER BY date ASC) AS num
    FROM event)

SELECT ID, date, X1
    FROM event_prep
    WHERE num = 1

やっていること
・ROW_NUMBER関数で個人ごとに連番(num)を作成する。
・その際、ORDER BY で date が古いものが一番上に来るようにしている(これは場面によって、何をどのように並び変えるかが変わります。)
・WITH句で作ったものから、連番が 1の値を取るデータを取り出す。

POSデータを使って個人ごとに最も大きい購買を集めたデータとかも同様の方法で作れると思います。

0
0
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
0
0