我有实验室分析结果数据库。由于分析的性质,结果只是随机 - 在现实世界中是正常的。所有结果都以整数存储在数据库中(我们将结果保存为ppm - 百万分之一)。 问题是,我想找几次相似的(可能相同的)材料分析。 数据库看起来像这样:
id |v1 |v2 |v3 |v4 |... |vn
----|----|----|----|----|----|----
1 |4560|5600|3333| 56| |0
2 |4575|5583|3354| 67| |0
3 |4565|4333|3332| 60| |0
4 | 0|5583|3333| 60| |0
ID为1和2的材料相同,材料3和4是唯一的。
我想给予容差+ -30或其他东西以消除结果随机因素并找到相同的材料。它可能很好,每列的容差值可以是单独的。
简化。如何让mysql返回值为+的类似整数 - 一些错误值?
答案 0 :(得分:0)
你真的不想用SQL做这件事。
基本上你正在做的是计算数据库定义的图形的connected components,如果它们在你定义的容差范围内,那么两行有一条边连接它们。
假设您的数据集足够小以适应内存,这很可能是在您的实验室中进行样本测试的结果,那么您最好的选择是全部读取,然后使用合适的库来计算连接的组件。例如,在Java中,您可以使用JGraphT;如果您需要在PHP中执行此操作,那么我确信也可以使用图形库。
在高端,对于大量数据集,有一些库可以在Spark集群上进行...