2009-07-21 8 views
4

J'ai une table SQL Server 2005 appelée ZipCode, qui contient tous les ZIP de l'US. Pour chaque entrée, il répertorie le code postal, le comté, la ville, l'état et plusieurs autres détails.Requête SQL pour compter et répertorier les différents comtés par code postal

Certains codes postaux s'étendent sur plusieurs villes et certains s'étendent même sur plusieurs comtés. Par conséquent, certains codes postaux apparaissent plusieurs fois dans la table.

J'essaye d'interroger la table pour voir quels codes postaux traversent plusieurs comtés.

C'est ce que j'ai jusqu'à présent:

select 
    zipcode, 
    count(zipcode) as total, 
    county, 
    state 
from 
    zipcode 
group by 
    zipcode, 
    county, 
    state 
order by 
    zipcode 

de 19248 enregistrements dans le jeu de résultats, voici les premiers enregistrements retournés:

zipcode total county state 
00501 2 SUFFOLK NY 
00544 2 SUFFOLK NY 
00801 3 SAINT THOMAS VI 
00802 3 SAINT THOMAS VI 
00803 3 SAINT THOMAS VI 
00804 3 SAINT THOMAS VI 
00805 1 SAINT THOMAS VI 
00820 2 SAINT CROIX VI 
00821 1 SAINT CROIX VI 
00822 1 SAINT CROIX VI 
00823 2 SAINT CROIX VI 
00824 2 SAINT CROIX VI 

Dans cet exemple particulier, chaque zip avec un total de deux ou plus se trouve dans la table plus d'une fois, et c'est parce que le "cityaliasname" (non montré) ou une autre colonne diffère. Mais je veux juste savoir quelles sont les zips qui s'y trouvent plus d'une fois parce que la colonne du comté diffère.

J'ai cherché avant de poster ceci et j'ai trouvé beaucoup de questions au sujet du comptage des disques mais je n'ai pas pu trouver comment les appliquer à mon problème. S'il vous plaît pardonnez-moi s'il y a déjà une question dont la réponse s'applique à cette question.

Répondre

6
SELECT 
    zipcode, 
    COUNT(DISTINCT county) 
FROM 
    zipcode 
GROUP BY 
    zipcode 
HAVING 
    COUNT(DISTINCT county) > 1 
+0

Vous voulez 'count (comté distinct)' – SquareCog

+0

J'ai vérifié que cette requête fonctionne en la comparant avec le champ ville. Cependant, mes données n'ont apparemment pas de codes postaux qui incluent plusieurs comtés malgré le fait que la source ait dit que c'était le cas! Tant pis! Merci pour l'aide, cependant. – Chris

-1

SELECT code postal, count (comté) FROM table GROUP BY code postal

1

Notez que 2005 une table ZIP sera tout à fait obsolète, puisque les mises à jour USPS que fichier mensuel. La plupart des tables ZIP sont dérivées du fichier ville-état USPS, qui ne répertorie que le comté PREDOMINANT pour chaque ZIP à cinq chiffres. La base de données USPS ZIP + 4 identifiera tous les comtés qui partagent plus d'un ZIP. En mai 2010, 9 944 des 42 068 codes postaux (plus de 23%) traversaient les frontières du comté.

http://semaphorecorp.com est une source bon marché de données USPS actuelles.

+0

Je faisais référence à SQL Server 2005, mais c'est toujours une bonne information. Je vous remercie. – Chris

Questions connexes