这是一个相当复杂的问题,所以我将其拆分:
挑战
我有一个具有以下结构的表:
- id(INT,唯一)
- 公司 (INT) -> 链接到包含公司的另一个表
- 成本类型 (INT)
- 值 (INT)
我需要通过计算每家公司所有成本类型的价值差异来比较公司。一家公司作为参考;其他公司应尽可能匹配参考公司的所有成本类型的值。然后需要根据与参考公司的匹配程度对结果进行排序。
事实
- 我们可以假设所有公司都有相同的成本类型
- 成本类型事先不知道:可以更改,恕不另行通知
- 两家公司之间成本类型值的差异应计算如下: ABS([参考公司成本类型值] - [其他公司成本类型值]) ^ 2
假设
我能想到的比较这些数据的唯一方法是:
- 获取所有不同的成本类型
- 获取参考公司的这些成本类型的值
- 以某种方式对每个公司的所有成本类型进行分组,并使用非常长的(自动生成的)查询将所有成本类型值与参考公司的值进行比较。
问题
- 这甚至可能吗?我不知道如何在不加入一家公司的所有行的情况下一次比较多行,这将导致一个巨大的查询并且需要永远。
- 有没有更有效的方法来做到这一点?也许对于我不知道的这些类型的问题有一个标准的解决方案?(在 Google 上找不到)
- 是否有另一个数据库系统(SQL、NoSQL,我对一切都开放)可以比 MySQL(我现在使用的)更有效地处理这些类型的问题?
感谢您阅读整个问题;我知道它很长,但很难解释。几天来,我一直在努力应对这一挑战,但似乎无法控制事情。提前致谢!