假设 SQL 数据库中的表结构如下:
Att1 | Att2 | Att3 | Cnt
我想了解给定 Att1 的所有 Att2 组合的 Att3 重叠。例如,如果我有下表:
123 | 456 | abc | 1
123 | 456 | efg | 1
123 | 456 | hij | 1
123 | 456 | klm | 1
123 | 456 | nop | 1
123 | 789 | efg | 1
123 | 789 | abc | 1
123 | 789 | xyz | 1
123 | 789 | nop | 1
345 | 456 | abc | 1
345 | 456 | efg | 1
345 | 789 | abc | 1
345 | 999 | efg | 1
我会生成以下输出:
123 | 456 | 456 | 1.0
123 | 456 | 789 | .6
123 | 789 | 456 | .75
123 | 789 | 789 | 1.0
345 | 456 | 456 | 1.0
345 | 456 | 789 | .5
345 | 456 | 999 | .5
345 | 789 | 456 | 1.0
345 | 789 | 789 | 1.0
345 | 789 | 999 | 0
345 | 999 | 456 | 1.0
345 | 999 | 789 | 0
345 | 999 | 999 | 1.0
我知道这可能不是使用 SQL 完成的最佳方式,因此我很高兴听到其他替代方案,但 SQL 是我目前拥有可用数据的地方。