3

5 桁の郵便番号 (例: 10001) と一致する州の略語 (例: NJ、NY、CA) を含むデータベースがあります。いくつかの郵便番号には複数の州 (つまり、10001 = NJ と 10001 = NY) が含まれていることがわかりましたが、これは間違っています。

   zip         State
 10001          NY
 10001          NJ
 10001          NY
 10001          NY
  ...           ...

各州には多数の郵便番号を指定できますが、各郵便番号には 1 つの州のみを指定する必要があります。

すべてのエラーを見つけたいのですが、そうするためのクエリを書くことができないようです。

助言がありますか?

4

4 に答える 4

19

明らかなことを指摘するだけです:

郵便番号は効率的な郵便配達を目的としているため、複数の州にまたがる軍事施設や、隣接する州から最も簡単にサービスを受けることができる 1 つの州の遠隔地など、郵便番号が州の境界をまたぐという異常なケースがあります。たとえば、ZIP コード 42223 は Christian KY と Montgomery TN にまたがり、ZIP Code 97635 は Lake OR と Modoc CA にまたがります。

http://en.wikipedia.org/wiki/ZIP_code

正規のデータと見なすものに注意し、信頼できるデータを提供してくれる人を常に信頼してください。


この場合、0 は NJ のため10001、NJ は間違っていますが、00001NJ には正確であり、1 は NY のため、NY には00001間違っていますが、NY に10001は正確です。http://en.wikipedia.org/wiki/List_of_ZIP_code_prefixesも参照してください

また、前のリンクの 1000 の郵便番号範囲を使用すると、あるべき範囲/州の外にある郵便番号を正確に判断できることにも注意してください...

于 2012-09-17T00:37:31.437 に答える
8

別のアプローチですが、単にカウントするのではなく、関係する州を示します。

SELECT zip, state 
FROM dbo.table AS t
WHERE EXISTS 
(
  SELECT 1 FROM dbo.table 
  WHERE zip = t.zip AND state <> t.state
)
GROUP BY zip, state
ORDER BY zip, state;

重複を特定して削除したら、一意の制約を追加して、zip,state来週、翌月などにこれを繰り返さないようにします。

于 2012-09-16T22:15:25.927 に答える
3

私は実際に全国的なデータセットを日常的に扱っており、この問題に頻繁に遭遇します。郵便番号の接頭辞に含まれる州指定子は、必ずしも配達エリアの範囲ではなく、郵便局がある州を示します。私は米国の北中部の問題について USPS の上層部と連絡を取り、郵便番号プログラムはもともと郵便番号が州の境界によって制限されることを意図していたと言われましたが、80 年代初頭に彼らは農村部で例外を作り始めました。ノースダコタ州の家がモンタナ州の郵便局から 10 マイル離れている場合がありますが、その州の最寄りの郵便局は数郡離れています。これが、これらの例外が設けられている理由です。地上レベルでは意味がありますが、データレベルでは意味がありません。現在、USPS データベースにはこれらの例外が多数あります。(私が見つけた) 最も多産な地域は、MT/ND と SD/ND の境界に沿っています。

于 2015-12-15T18:49:44.693 に答える
1

これにより、必要なものが得られるはずです。

select zip,count(distinct state)
from TheTable
 group by zip
 having count(distinct state)>1

これにより、テーブルに複数の州が存在する各郵便番号のリストが表示されます。

于 2012-09-16T21:53:23.203 に答える