今回は,医薬品データを例にSQLの相関サブクエリの応用について説明します.
相関サブクエリは,プログラミングでいう「繰り返し」や「逐次処理」です.
少し発展的な内容かもしれません。
今回のお話は、下記のような方に参考になると思います
医薬品に関するデータ解析に関心がある方
相関サブクエリの応用方法を知りたい方
相関サブクエリを用いて,任意の期間における医薬品の種類数を求めます.
電子カルテやレセプトデータはどれも似たような構造ですので、今回のやり方で応用が利くのではないかと思います。
SQLの相関サブクエリの使い方【医薬品データの例】
材料は,「drugテーブル」と「drug_conテーブル」です.
drugテーブルには、患者それぞれについて医薬品、処方日、処方日数が格納されています。
このdrug_conテーブルに,「cont」というカラムを追加します。
指定期間内の医薬品数をもとめる
下記のSQLのポイントは2個です.
相関サブクエリを使用している
相関サブクエリを利用することで、
「drug_conテーブル」 を元に, 「drugテーブル」 を探索していく処理を記述することができます.
行番号をグループ化している(group by)
処方期間を算出するためには、処方ごとの情報が必要になります。
つまり、各行を各処方に対応させる必要があります。
下記のSQLでは,行番号をグループ化することで,
「1行ごとの結果を算出できるようにしています」
上記のSQLを適用すると,下記のテーブルが得られます.
「count」というカラムに,各レコードに関して「dispensing date」から「expire_date」の期間において,いくつの医薬品が使われていたかが記載されています.
今回の記事は相関サブクエリを使いました。
ネットや本などでは相関サブクエリは,同一のテーブルを持ちていることが多いのですが,実際には異なるテーブル同士を用いることが一般的です.
このような処理は,ある程度データ量が多くなると(目安として1千万レコードを超えたあたり),膨大な実行時間がかかります.
今後ビッグデータを扱っていこうとしている方には,参考になったのではないかと思います. 今回のような相関サブクエリの使い方はかなり応用範囲が広いと思うので,是非覚えておいて損はないかと思います。
コメント