У меня есть следующие таблицы:
Order
----
ID (pk)
OrderItem
----
OrderID (fk -> Order.ID)
ItemID (fk -> Item.ID)
Quantity
Item
----
ID (pk)
Как я могу написать запрос, который может выбрать все Orders, которые по крайней мере на 85% похожи на конкретный Order?
Я рассмотрел статистику Jaccard Index, чтобы рассчитать сходство двух Orders. (Взяв пересечение каждого набора из OrderItems, деленное на объединение каждого набора из OrderItems)
Однако я не могу придумать, как это сделать, не сохраняя вычисленный индекс Jaccard для каждой возможной комбинации двух Orders. Есть ли другой способ?
Кроме того, есть ли способ включить разницу в Quantity каждого согласованного OrderItem?
Дополнительная информация:
Всего Orders: ~ 79k
Всего OrderItems: ~ 1.76m
Avg. OrderItems за Order: 21.5
Всего Items: ~ 13k
Примечание
85% -ое сходство - это просто лучшее предположение о том, что действительно нужно клиенту, оно может измениться в будущем. Решение, которое работает для любого сходства, было бы предпочтительным.

