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
DigNo Ape 數遊原人
60會員
138內容數
我們秉持著從原人進化的精神,不斷追求智慧的累積和工具的運用來提升生產力。我們相信,每一個成員都擁有無限的潛力,透過學習和實踐,不斷成長和進步。
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
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
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!把輸入內容做小寫轉換是很常見的應用唷~
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News