DIFFERENCE() で名前を比較する
前の演習では、flight_statistics テーブルにある統計担当者の名前を SOUNDEX() で確認しました。
今回は同様のことを、DIFFERENCE() 関数を使って行います。DIFFERENCE() は、2 つの文字列が同じ、または非常に似ている場合に 4 を返し、ほとんど似ていない場合は 0 を返します。
もし 2 つの文字列の DIFFERENCE() の結果が 4 なのに、実際のテキストは異なる場合、そのデータはクリーニング対象である可能性があります。
この演習はコースの一部です
SQL Server データベースでのデータクレンジング
演習の手順
S1からstatistician_name列とstatistician_surname列の重複のない値を選択します。flight_statisticsテーブルをS2として内部結合し、各テーブルの対応する列同士のDIFFERENCEが 4 となる、発音が似ている名と姓で結合します。S1とS2でそれぞれstatistician_nameとstatistician_surnameの値が一致していない行のみを抽出するようにフィルターします。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
SELECT
-- First name and surnames of the statisticians
DISTINCT S1.___, S1.___
-- Join flight_statistics with itself
FROM ___ S1 INNER JOIN ___ S2
-- The DIFFERENCE of the first name and surname has to be equals to 4
ON ___(S1.___, S2.___) = 4
AND ___(S1.___, S2.___) = 4
-- The texts of the first name or the texts of the surname have to be different
WHERE S1.___ <> S2.___
OR S1.___ <> S2.___