मेरे पास निम्न तालिका है और मेरा लक्ष्य उन ग्राहकों को खोजना है जो किसी अन्य दिए गए ग्राहक के समान दिखते हैं कि उन्होंने कुछ निर्माताओं को कैसे रेट किया है। यह उदाहरण इस 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
उदाहरण:
हम पता लगाना चाहते हैं जो ग्राहकों के लिए सबसे अच्छा मैच ग्राहक 'ए' जो दो निर्माताओं के लिए रेटिंग है, manuf_A और manuf_B।
वांछित परिणाम:
customer difference
D 4
B 7
C 11
उम्मीद एल्गोरिथ्म:
- छोटे अंतर मूल्य है, करीब से संबंधित दो ग्राहकों
- हैं एक ग्राहक नहीं खाता है तो विषय ग्राहक के साथ किसी भी निर्माता रेटिंग साझा करें, उनकी मौजूदगी रेटिंग शून्य के बजाय शून्य होनी चाहिए।
बी अंतर:
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
सी अंतर:
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
डी अंतर:
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
यह कैसे MySQL में किया जा सकता है पर कोई सलाह होगा अच्छी तरह से प्राप्त किया जाना वैकल्पिक दृष्टिकोण के किसी भी सुझाव के साथ।
बस एक टिप्पणी: यह वास्तव में एक अच्छी तरह से लिखा प्रश्न है। आपने एक SQL Fiddle उदाहरण प्रदान किया है (वह काम करता है)। आपने समस्या को स्पष्ट रूप से समझाया है। बोनस के रूप में, यह एक दिलचस्प समस्या है। –
[यूक्लिडियन दूरी] (https://en.wikipedia.org/wiki/Euclidean_distance) एक बेहतर दृष्टिकोण हो सकता है। –
@PaulSpiegel। । । यदि यह आपको बेहतर महसूस करता है, तो इसे मैनहट्टन दूरी कहा जाता है और इस तरह की समस्या के लिए पूरी तरह से उचित है। –