2017-03-13 66 views
0

這裏是原始數據:我需要從表格中選擇一個列不能有重複的情況

leasetenantssn | houseid

641078001 |  100 
    699061306 |  100 
    734296097 |  200 
    788930793 |  200 
    699061306 |  200 
    641078001 |  300 
    674926108 |  300 
    709106079 |  400 
    641078001 |  400 
    664067824 |  400 
    709106079 |  500 
    709106079 |  600 
    709106079 |  600 
    699061306 |  800 
    641078001 | 1000 
    699061306 | 1000 
    690260126 | 1000 
    690260126 | 1100 

我想選擇所有超過3個獨特的houseid附加到他們的SSNs。

我第一次嘗試很簡單:

Select leasetenantSSN from tenants group by leasetenantSSN having count(*) > 3; 

該返回709106079,641078001,699061306.但問題是,只有709106079有兩個獨特的houseids,即使他們有3 houseids總。

他們不應該被退回。

這是我的一次新的嘗試:

Select distinct on (houseid) leasetenantSSN from tenants group by houseid having count(*) > 3; 

但是,這將引發一個錯誤,因爲它要leasetenantSSN是小組通過,但我不能這樣做,因爲這樣既不會返回任何東西。

所以我不知道現在該做什麼。

回答

1

我試圖選擇超過3個獨特的houseid附加到他們的所有SSNs。

在這裏你去:

SELECT t.leasetenantSSN 
FROM tenants t 
WHERE (
     SELECT count(DISTINCT houseid) 
     FROM tenants 
     WHERE leasetenantSSN = t.leasetenantSSN 
    ) > 3 
GROUP BY t.leasetenantSSN 
; 

- >

leasetenantssn 
---------------- 
    641078001 
    699061306 
(2 rows) 

考慮加密社會安全號碼,他們是因爲他們屬於人民非常敏感。

+0

乾杯,我應該想到使用嵌套查詢。別擔心,這些SSN是完全組成的。 –

+0

很高興聽到! – Gab

相關問題