2015-05-04 74 views
0

我正在嘗試使用10.000+行在數據庫上創建組。 我需要快速高效,所以我正在爲每個集羣做二進制變量。 一,二,四,五和六在Group1中。SQL:如何有效地對重疊組進行排序

但'兩'也可能在組nr。 2,因爲我無法克服的錯誤,因爲我的數據集來自webscrape。我嘗試以一種獨特的方式對所有東西進行排序,但如果我希望高效快速地完成錯誤,那麼基本上是不可能的。

ID Title Group1  Group2  Group3  Ungrouped 
1 One  1   0   0   0 
2 Two  1   1   0   0 
3 Three 0   1   1   0 
4 Four  1   0   1   0 
5 Five  1   0   0   0 
6 Six  1   1   1   0 
7 Seven 0   0   0   1 

我的sollution想法:

  1. 分配組(一個人),直到一切都分組一次或多次。
  2. 查詢分配了多個組的所有內容(2,3,4,6)
  3. 手動決定要刪除哪個1,直到它們只有一個組分配給每個組。

它實際上是一個好主意,做手工的第三部分,因爲它需要的文件的內容分析)

我的問題:

如何指定,我需要看到一切都與一個以上的團體?它與限制和獨特價值有什麼關係,還是有一種更簡單明顯的方式,我沒有看到?

回答

0

如果你的集羣存儲爲整數,你可以做:

select c.* 
from clusters c 
where (cluster1 + cluster2 + cluster3) > 1; 

我不知道什麼是「二元變量」是SQLite中。一些數據庫支持二進制標誌,並且您需要將值轉換爲where子句的整數。

+0

這聽起來很完美!你能解釋更多關於'c。*'和'簇c'嗎?正如你可能已經注意到的,我是SQL新手。 –

+0

'c'是一個表別名。這個查詢實際上並不需要。 –

相關問題