أداة لحساب المسافة بين مسافتين من بريد المملكة المتحدة وإيجاد قائمة بجميع الرموز البريدية ضمن عدد معين من الكيلومترات.
انقر أدناه لمشاهدة الفيديو التفصيلي:
للعثور على قائمة بالرموز البريدية ضمن X كيلومتر، استخدم وظيفة الجدول postCodesWithinXkm
. على سبيل المثال، للعثور على جميع الرموز البريدية التي يبلغ طولها 5 كيلومترات من SW1A 0AA، يمكنك استخدام الكود أدناه.
SELECT * FROM postCodesWithinXkm('SW1A 0AA',5)
لتحديد المسافة بين رمزين بريديين، استخدم الدالة Scalar distanceBetweenPostCodes
. على سبيل المثال: للعثور على المسافة بين SW1A 0AA وSE10 0DX، يمكنك استخدام الكود أدناه.
SELECT dbo.distanceBetweenPostCodes('SW1A 0AA','SE10 0DX')
للعثور على قائمة بجميع الرموز البريدية والمسافة بينها وبين منشور معين، استخدم وظيفة الجدول distanceToAllPostCodes
SELECT * FROM dbo.distanceToAllPostCodes('SW1A 0AA') a
لنفترض أن لدينا قاعدة بيانات لإدارة علاقات العملاء (CRM) تحتوي على جدول العملاء Prospects
الذي يحتوي على قائمة بعناوين العملاء المحتملين وجدول Branch
الذي يحتوي على كافة عناوين فروعنا.
postCodesWithinXkm
إذا كنا في فرع معين نجري عرضًا ترويجيًا ونريد إخطار جميع العملاء المحتملين على بعد 5 كيلومترات من الفرع، فيمكننا استخدام الكود أدناه للحصول على قائمة بجميع العملاء المحتملين الذين يجب علينا الاتصال بهم.
SELECT a.ProspectName, a.ProspectEmail, a.PostCode
FROM CRM..Prospects a
INNER JOIN postCodesWithinXkm('PO19 1EL',5) b on a.PostCode = b.PostCode
سيحب الإخراج شيئًا مثل:
اسم العميل المحتمل | ProspectEmail | شفرة البريد |
---|---|---|
شركة اكمي المحدودة | [email protected] | PO18 0AE |
Tools4u المحدودة | نيد@tools4u.com | بو20 2غو |
لحوم هال | [email protected] | PO19 7EY |
distanceBetweenPostCodes
يمكننا استخدام الكود أدناه لتحديد عدد العملاء المتوقعين ضمن مسافة 5 كيلومترات من كل فرع من فروعنا.
SELECT a.PostCode As BranchPostcode, a.BranchName, count(b.Id) As CustomerCount
FROM CRM..Branches a
INNER JOIN CRM..Prospects b
ON PostCodeDistanceCalculator.dbo.distanceBetweenPostCodes(a.PostCode,b.PostCode)<5
GROUP BY a.PostCode
سيحب الإخراج شيئًا مثل:
الرمز البريدي للفرع | فرع | عملاء |
---|---|---|
بي ان 1 2 ري | برايتون | 15 |
PO19 1EL | تشيستر | 37 |
W4 5TA | تشيسويك | 89 |
distanceToAllPostCodes
لنفترض أننا أردنا تحديد أقرب فرع لكل عميل محتمل. يمكننا الاستفادة من distanceToAllPostCodes
لتحديد مسافة كل فرع لكل عميل محتمل والطلب حسب الخزانة.
SELECT a.ProspectName, c.BranchName, b.distance,
ROW_NUMBER() OVER (PARTITION BY a.ProspectName ORDER BY b.distance ) As DistanceRank
FROM CRM..Prospects a
CROSS APPLY PostCodeDistanceCalculator.dbo.distanceToAllPostCodes(a.PostCode) b
INNER JOIN CRM..Branches c on b.Postcode = c.Postcode
سيحب الإخراج شيئًا مثل:
اسم العميل المحتمل | اسم الفرع | مسافة |
---|---|---|
شركة اكمي المحدودة | برايتون | 7.477788367078679 |
شركة اكمي المحدودة | تشيستر | 82.13621491096778 |
شركة اكمي المحدودة | تشيسويك | 86.65279491895977 |
PopPostCodes.sql
وقم بتحرير موقع الملف 'C:UserstimgasourcereposPostCodeDistanceCalculatorPostCodeDistanceCalculatorFilesukpostcodes.csv'
للإشارة إلى الموقع الصحيح.PostCodeDistanceCalculator.publish.xml
وحدد المثيل الهدف وقاعدة البيانات المراد النشر إليهما.يحتوي على بيانات Ordnance Survey © حقوق الطبع والنشر وقاعدة البيانات الخاصة بالتاج لعام 2021
يحتوي على بيانات Royal Mail © حق النشر وقاعدة بيانات Royal Mail 2021
المصدر: مكتب الإحصاءات الوطنية المرخص بموجب الترخيص الحكومي المفتوح الإصدار 3.0