色名の標準化
前の演習では、DIFFERENCE() 関数を使って、目的の色表記 GRAY に近い色を特定しました。しかしこの方法だと、vehicle_color がグレーかどうか曖昧なレコードがいくつか残ってしまいます。具体的には、文字列 GR(green)が文字列 GRAY と同じ Soundex コードを持つためです。幸い、こうした vehicle_color 値を持つレコードは、変更対象から除外できます。
この演習では、同じ色を表す類似文字列を見つけて、vehicle_color を一貫してグレーに統一します。今回も fuzzystrmatch モジュールはすでにインストール済みです。
この演習はコースの一部です
PostgreSQLデータベースで学ぶデータクレンジング
演習の手順
SET句を完成させ、'GRAY'の Soundex コードと一致する Soundex コードを持つvehicle_colorのレコードに対して、vehicle_colorを'GRAY'に設定してください。- サブクエリの
WHERE句を更新し、vehicle_colorが'GR'のレコードのsummons_numberは返さない(=除外する)ようにしてください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
UPDATE
parking_violation
SET
-- Update vehicle_color to `GRAY`
___ = ___
WHERE
summons_number IN (
SELECT
summons_number
FROM
parking_violation
WHERE
DIFFERENCE(vehicle_color, 'GRAY') = 4 AND
-- Filter out records that have GR as vehicle_color
___ != ___
);