SQL:如何有效地对重叠组进行排序
SQL: How to sort overlapping groups efficiently
我正在尝试在包含 10.000 多行的数据库上进行分组。
我需要快速高效,所以我正在为每个集群做二进制变量。
一、二、四、五和六在 Group1 中。
但是 'Two' 也可能在第 nr 组中。 2,由于我无法克服的错误,因为我的数据集来自网络抓取。我尝试以独特的方式对所有内容进行排序,但如果我希望高效快速,基本上不可能不出错。
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
我的解决方案:
- 分配(一个)组,直到所有内容都被分组一次或多次。
- 查询分配了多个组(2、3、4、6)的所有内容
- 手动决定要删除哪些 1,直到每个只分配一个组。
手动完成第 3 部分实际上是个好主意,因为它需要对文档进行内容分析)
我的问题:
我如何指定,我需要查看不止一组的所有内容?它与约束和唯一值有关,还是有一种我没有看到的更简单明显的方法?
如果您的簇存储为整数,您可以这样做:
select c.*
from clusters c
where (cluster1 + cluster2 + cluster3) > 1;
我不知道 SQLite 中的 "binary variable" 是什么。有些数据库确实支持二进制标志,您需要将 where
子句的值转换为整数。
我正在尝试在包含 10.000 多行的数据库上进行分组。 我需要快速高效,所以我正在为每个集群做二进制变量。 一、二、四、五和六在 Group1 中。
但是 'Two' 也可能在第 nr 组中。 2,由于我无法克服的错误,因为我的数据集来自网络抓取。我尝试以独特的方式对所有内容进行排序,但如果我希望高效快速,基本上不可能不出错。
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
我的解决方案:
- 分配(一个)组,直到所有内容都被分组一次或多次。
- 查询分配了多个组(2、3、4、6)的所有内容
- 手动决定要删除哪些 1,直到每个只分配一个组。
手动完成第 3 部分实际上是个好主意,因为它需要对文档进行内容分析)
我的问题:
我如何指定,我需要查看不止一组的所有内容?它与约束和唯一值有关,还是有一种我没有看到的更简单明显的方法?
如果您的簇存储为整数,您可以这样做:
select c.*
from clusters c
where (cluster1 + cluster2 + cluster3) > 1;
我不知道 SQLite 中的 "binary variable" 是什么。有些数据库确实支持二进制标志,您需要将 where
子句的值转换为整数。