2012-02-24 3 views
2

J'ai une table qui contient des informations d'abonnement. Certains des codes postaux sont à cinq chiffres, tandis que certains sont 9 (55025 contre 55025-4056). Je veux lancer une requête pour compter le nombre total d'abonnements dans chaque code postal, mais j'ai besoin de regrouper les 9 chiffres avec ceux à 5 chiffres où ils correspondent.MySQL Group Par code postal

SELECT zip, COUNT(id) AS total FROM subscriptions WHERE status = 'A' GROUP BY zip 

Mais évidemment, il lit 55025 et 55025-4056 comme deux codes postaux différents. Si 55025 a 100 enregistrements et 55025-4056 a 10 enregistrements, je voudrais que le résultat montre 55025 = 110 enregistrements. Comment puis-je effectuer cette requête pour regrouper par les 5 premiers chiffres du code postal?

Merci

Répondre

4
SELECT LEFT(zip,5) zip, COUNT(id) AS total 
FROM subscriptions WHERE status = 'A' 
GROUP BY LEFT(zip,5); 
+0

Joli !!! J'adore Rolando. Fonctionne comme un charme !! – Munk

0
SELECT zip, COUNT(id) AS total 
FROM subscriptions 
WHERE status = 'A' 
GROUP BY SUBSTRING(zip, 1, 5)