私は次の表を持っています。私の目標は、他の特定の顧客に最も類似している顧客を、特定のメーカーの評価方法で検索することです。この例はSQL fiddleにあります。MySQL:複数の行の数値の違いによってSQLクエリの結果を注文するにはどうすればよいですか?
customer manufacturer rating
A Manuf_A 8
A Manuf_B 3
B Manuf_A 4
B Manuf_Y 3
C Manuf_X 3
C Manuf_Y 7
D Manuf_A 8
D Manuf_B 7
例:
我々は、顧客ベストマッチの顧客2メーカー、manuf_Aとmanuf_Bの格付けを持っている ''を見つけたいです。
望ましい結果:
customer difference
D 4
B 7
C 11
期待アルゴリズム:
- 差分値が小さいほど、より近い顧客がない場合は、2人の顧客が
- をしている関連製造元の評価を対象の顧客と共有する場合は、それらの存在しない評価をゼロにする必要があります。
B差:
abs(A.manuf_A.rating (8) - B.manuf_A.rating(4)) = 4
abs(A.manuf_B.rating (3) - B.manuf_B.rating(Doesn't exist/0)) = 3
= 4 + 3
= 7
C差:
abs(A.manuf_A.rating (8) - C.manuf_A.rating(Doesn't exist/0)) = 8
abs(A.manuf_B.rating (3) - C.manuf_B.rating(Doesn't exist/0)) = 3
= 8 + 3
= 11
D差:これはMySQLので行うことができる方法について
abs(A.manuf_A.rating (8) - D.manuf_A.rating(8)) = 0
abs(A.manuf_B.rating (3) - D.manuf_A.rating(7)) = 4
= 0 + 4
= 4
任意のアドバイスは好評であろう代替アプローチの提案とともに
コメント:これは本当によく書かれた質問です。あなたはSQL Fiddleの例を提供しました。問題をはっきりと説明しました。ボーナスとして、それは興味深い問題です。 –
[ユークリッド距離](https://en.wikipedia.org/wiki/Euclidean_distance)が良いアプローチかもしれません。 @PaulSpiegel。 –
。 。あなたが気分を良くするなら、これはマンハッタン距離と呼ばれ、このような問題に対しては完全に合理的です。 –