2015-07-10 25 views
1
FirstName  LastName  SSN   Phone   EncounterID 
Justin  Kelley  555-55-5555  517-555-1212 123456789 
Justin  Kelly  555-55-5555  517-555-1212 123456789 
James   Smith  444-44-4444  312-555-3434 99944444 
James   Smith  444-44-4444  312-555-3434 99944444 

我有一張如上所述的表,其中包含數百萬EncounterID。我需要知道每列中存在差異(缺陷)的次數。我的例子輸出將是:根據一列中的相似性檢查所有其他列中的更改

First Name - 2/2 
Last Name - 1/2 
SSN - 2/2 
Phone - 2/2 

任何幫助嗎?

+0

你認爲「類似」行是什麼?你爲什麼不把賈斯汀凱利和詹姆斯史密斯比較,並報告0場比賽?這純粹是在EncounterID? – Siyual

+0

我不認爲你想要檢查相似性的任何列會改變,除了電話嗎?這些是你試圖比較的唯一字段嗎? –

+0

是 - 只有EncounterID相似時才認爲它們相似。甚至可能有兩個不同的賈斯汀凱利,但除非EncounterID匹配,否則這些目的無關緊要。 –

回答

4

基本上需要的數據是一列中具有多個值的實體的數量。

這是最容易計算的列的基礎上:

select sum(case when NumFirstNames <> 1 then 1 else 0 end) as DifferentFirstNames, 
     sum(case when NumLastNames <> 1 then 1 else 0 end) as DifferentLastNames, 
     sum(case when NumSSN <> 1 then 1 else 0 end) as DifferentSSN, 
     sum(case when NumPhone <> 1 then 1 else 0 end) as DifferentPhone  
from (select EncounterId, count(*) as Num, 
      count(distinct FirstName) as NumFirstNames, 
      count(distinct LastName) as NumLastNames, 
      count(distinct SSN) as NumSSN, 
      count(distinct Phone) as NumPhone 
     from table t 
     group by EncounterId 
    ) e; 

,只要你喜歡你可以格式化結果。

相關問題