SQL 解鎖 - 美國 ZIP Code 郵遞區號

DigNo Ape-avatar-img
發佈於SQL
更新於 發佈於 閱讀時間約 3 分鐘

處理美國地區 ZIP Code 郵遞區號相關的資料問題應該是許多外企資料分析師每天都會處理的問題,ZIP Code 通常是在做區域相關分析的最小、訂單能記錄到最細的標準化單位,引此了解一些處理ZIP Code的眉角對於資料處理、分析、視覺化,以至於建構模型是非常重要的喔! 本篇就讓我們拿一些實例與各位分享。

什麼是Zip Code

ZIP Code 是美國郵政使用的一種郵遞區號,一般常以大寫ZIP。ZIP是英語Zone Improvement Plan(地區改進計劃)的簡稱,它暗示郵件可以以更有效率及快捷地送到目的地。最基本的ZIP編號包括五個號碼,隨後增加了四個號碼,使郵件可以更精確地傳送到目的地。增加號碼後的ZIP編號稱為"ZIP+4"。ZIP編號曾被美國郵政註冊成一個商標,但其註冊至今已經過期。

格式

如同上述,ZIP code 通常是純數字格式,標準的格式是五位數字,例如"28230" ,和"ZIP+4",比如"999290531"或"99929-0531"。美國東北某些區域的ZIP code是以0開頭,比如"01172"或"012402123"。因為連接符號"-"和開頭0的性質,即便主要格式是數字,ZIP code 欄位常常在資料庫裡還是會以文字格式儲存。

JOIN
  • 兩表都是九位數字,但其中一張表有連接符號"-",另一張沒有,這樣是幾乎JOIN不到資料的。或是,一張表是5位數字,另一張是九位數字,這樣也是JOIN不到資料的。
raw-image
  • 兩表都是五位數字,但其中一張是數字格式,另一張是文字格式,有些軟體會報錯,有些會連接可以連接到的。若確定兩張表都是五位數字且沒有連接符號"-",把文字格式cast成數字是可行的。
raw-image


  • 一張表是五位數字,另一張九位數字但沒有連接符號"-",兩張表皆為文字格式。因為位數不同,若不做left(ZIPCODE,5)處理是連接不到彼此的。
raw-image


  • 類似上一個狀況,但兩張表皆為數字格式,這時作left(ZIPCODE,5)會相當危險,因為你可能會把錯誤的把11231234(前5位是11231)連結到11231。
raw-image
  • 綜合各種狀況的資料表,有些資料表有5碼+9碼,有些只有5碼,有些是數字格式,有些是文字格式,讓處理起來讓人不是非常放心,我到底有沒有JOIN對的資料啊?
一勞永逸

我這裡提供了一個流程讓您不用再去判斷上述狀況(假設資料只要JOIN上5碼的ZIP code)。

首先,新增一個欄位叫zipcode_adj (文字格式),先把多餘的符號去掉。

zipcode_adj = replace([zipcode], '-' , '')

接著,如果有發現出現4碼或8碼長度的資料,在前頭補一個0。

Update TABLE1​

set zipcode_adj = '0' + zipcode_adj

where  len(zipcode_adj) in (4,8)

把兩個(或以上)的資料集都按照此方法處理後再作JOIN,就可避免上述的失誤囉。

UPDATE A
SET A.Col  = B.Col
FROM TABLE1​ A
INNER JOIN TABLE2​ B
ON
LEFT(A.zipcode_adj ,5) =  LEFT(B.zipcode_adj,5)


遵循著我們上述的思考脈絡,希望能對您思考這類問題有所助益,也謝謝您撥冗完食。這些內容是根據我過去在外商的經驗,非常歡迎業界先進留言與我交流,我也會不定期補充我的觀點,也歡迎Follow我的Threads,持續都會有這類問題討論和生產力提升的點子喔!

留言
avatar-img
留言分享你的想法!
avatar-img
DigNo Ape 數遊原人
50會員
133內容數
我們秉持著從原人進化的精神,不斷追求智慧的累積和工具的運用來提升生產力。我們相信,每一個成員都擁有無限的潛力,透過學習和實踐,不斷成長和進步。
DigNo Ape 數遊原人的其他內容
2025/02/12
請以口語、白話形式解析以下SQL程式碼並描繪你認為的原資料表([Database].[Schema].[Table] )結構樣貌。 SELECT A.[Business_Unit], A.[Order_Number] , SUM([Sales_Units]) as [Sales_Uni
Thumbnail
2025/02/12
請以口語、白話形式解析以下SQL程式碼並描繪你認為的原資料表([Database].[Schema].[Table] )結構樣貌。 SELECT A.[Business_Unit], A.[Order_Number] , SUM([Sales_Units]) as [Sales_Uni
Thumbnail
2024/11/13
ABC 分析 ABC分析(ABC Analysis)是一種基於80/20的分類原則,常用於庫存管理、供應鏈分析和資源分配中。它將產品或項目按其相對重要性分為A、B 和 C三個類別。其目的是協助企業專注於最重要的項目,以提高效率和降低成本。
Thumbnail
2024/11/13
ABC 分析 ABC分析(ABC Analysis)是一種基於80/20的分類原則,常用於庫存管理、供應鏈分析和資源分配中。它將產品或項目按其相對重要性分為A、B 和 C三個類別。其目的是協助企業專注於最重要的項目,以提高效率和降低成本。
Thumbnail
2024/08/27
購物籃分析(Basket Analysis)是一種常見的資料探勘技術,可以幫助企業了解哪些產品經常被消費者一起購買,從而優化產品組合和促銷策略。 表1是將公司每筆訂單內容轉換為訂單號-SKU的組合,請使用SQL來進行購物籃分析,找出最常被一起下訂的產品組合。
2024/08/27
購物籃分析(Basket Analysis)是一種常見的資料探勘技術,可以幫助企業了解哪些產品經常被消費者一起購買,從而優化產品組合和促銷策略。 表1是將公司每筆訂單內容轉換為訂單號-SKU的組合,請使用SQL來進行購物籃分析,找出最常被一起下訂的產品組合。
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
當你邊吃粽子邊看龍舟競賽直播的時候,可能會順道悼念一下2300多年前投江的屈原。但你知道端午節及其活動原先都與屈原毫無關係嗎?這是怎麼回事呢? 本文深入探討端午節設立初衷、粽子、龍舟競渡與屈原自沉四者。看完這篇文章,你就會對端午、粽子、龍舟和屈原的四角關係有新的認識喔。那就讓我們一起解開謎團吧!
Thumbnail
當你邊吃粽子邊看龍舟競賽直播的時候,可能會順道悼念一下2300多年前投江的屈原。但你知道端午節及其活動原先都與屈原毫無關係嗎?這是怎麼回事呢? 本文深入探討端午節設立初衷、粽子、龍舟競渡與屈原自沉四者。看完這篇文章,你就會對端午、粽子、龍舟和屈原的四角關係有新的認識喔。那就讓我們一起解開謎團吧!
Thumbnail
題目敘述 Integer to English Words 給定一個整數num 請轉換成對應的的英文數字表達(One, Two, Three, ... 那種數字表達式)
Thumbnail
題目敘述 Integer to English Words 給定一個整數num 請轉換成對應的的英文數字表達(One, Two, Three, ... 那種數字表達式)
Thumbnail
題目敘述 Merge Nodes in Between Zeros 給定一個鏈結串列,合併非零區間的節點(以加總的方式合併),輸出合併後的鏈結串列。
Thumbnail
題目敘述 Merge Nodes in Between Zeros 給定一個鏈結串列,合併非零區間的節點(以加總的方式合併),輸出合併後的鏈結串列。
Thumbnail
題目敘述 題目會給定一個鏈結串列的起始點,要求我們把其中區間總和為0的部分刪除掉。 例如 1→ 2 → -2 → 3 → 4 裡面有一段是2 → -2 區間總和為零,所以簡化刪除後變成 1→ 3 → 4 題目的原文敘述 測試範例 Example 1: Input: head
Thumbnail
題目敘述 題目會給定一個鏈結串列的起始點,要求我們把其中區間總和為0的部分刪除掉。 例如 1→ 2 → -2 → 3 → 4 裡面有一段是2 → -2 區間總和為零,所以簡化刪除後變成 1→ 3 → 4 題目的原文敘述 測試範例 Example 1: Input: head
Thumbnail
題目敘述 題目會給我們一個傳統手機的數字鍵盤 和一個數字鍵的輸入字串digits,要求我們列舉出所有輸入字串digits可能對應到的英文字母的排列。 例如輸入digits="23" 那對應到的英文字母排列就是"ad", "ae", "af", "bd", "be", "bf", "cd", "
Thumbnail
題目敘述 題目會給我們一個傳統手機的數字鍵盤 和一個數字鍵的輸入字串digits,要求我們列舉出所有輸入字串digits可能對應到的英文字母的排列。 例如輸入digits="23" 那對應到的英文字母排列就是"ad", "ae", "af", "bd", "be", "bf", "cd", "
Thumbnail
題目會給定我們一個輸入陣列connections,和城市的總數目n。 輸入陣列裡面是以pair的方式儲存,(a, b) 分邊代表這條邊的起點和終點。 請問,我們需要改變多少條邊的方向,才能讓每條路徑都指向編號零號的城市( City #0)? 註: 題目還保證,在改變方向之後,一定可以讓每座城
Thumbnail
題目會給定我們一個輸入陣列connections,和城市的總數目n。 輸入陣列裡面是以pair的方式儲存,(a, b) 分邊代表這條邊的起點和終點。 請問,我們需要改變多少條邊的方向,才能讓每條路徑都指向編號零號的城市( City #0)? 註: 題目還保證,在改變方向之後,一定可以讓每座城
Thumbnail
題目敘述 題目會給我們一串相鄰矩陣isConnected,相鄰矩陣的元素值isConnected[i][j] 代表第i座城市和第j座城市是否有連通。 如果彼此有連通,則isConnected[i][j]=1。 如果彼此沒有連通,則isConnected[i][j]=0。 彼此互相有路徑可以
Thumbnail
題目敘述 題目會給我們一串相鄰矩陣isConnected,相鄰矩陣的元素值isConnected[i][j] 代表第i座城市和第j座城市是否有連通。 如果彼此有連通,則isConnected[i][j]=1。 如果彼此沒有連通,則isConnected[i][j]=0。 彼此互相有路徑可以
Thumbnail
媽 ~ 我終於把【工程數學】應用在生活中了 !! 《 LOOKUP 與 複數 的完美結合運用 》
Thumbnail
媽 ~ 我終於把【工程數學】應用在生活中了 !! 《 LOOKUP 與 複數 的完美結合運用 》
Thumbnail
文字處理 101!把輸入內容做小寫轉換是很常見的應用唷~
Thumbnail
文字處理 101!把輸入內容做小寫轉換是很常見的應用唷~
Thumbnail
題目:如果提供的數字在0-9之間,請以文字形式返回。輸入1、輸出 “One”
Thumbnail
題目:如果提供的數字在0-9之間,請以文字形式返回。輸入1、輸出 “One”
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News