Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

वजन के साथ MySQL रेटिंग

पहला कदम avg_num_votes . की गणना करना है और avg_rating :

SELECT
  SUM(totalVotes)/COUNT(*) AS avg_num_votes,
  SUM(avgVote)/COUNT(*) AS avg_rating
FROM voting;

यदि आप एक छोटी सी त्रुटि के साथ जी सकते हैं, तो यह गणना करने के लिए पर्याप्त हो सकता है कि कभी-कभार।

अब अपने सूत्र और उपरोक्त मानों का उपयोग करके, आप वेटिंग क्वेरी चला सकते हैं। एक छोटे से अनुकूलन के रूप में मैं avg_num_votes * avg_rating की पूर्व-गणना करता हूं और इसे avg_summand कहें

SELECT
  voting.*, -- or whatever fields you need
  ($avg_summand+totalVotes*avgVote)/($avg_num_votes+totalVotes) AS bayesian
FROM voting
ORDER BY  bayesian DESC
LIMIT 1;

संपादित करें

आप इसे एक जॉइन के रूप में चला सकते हैं:

SELECT
  voting.*, -- or whatever fields you need
  (avg_num_votes*avg_rating+totalVotes*avgVote)/(avg_num_votes+totalVotes) AS bayesian
FROM voting,
(
  SELECT
    SUM(totalVotes)/COUNT(*) AS avg_num_votes,
    SUM(avgVote)/COUNT(*) AS avg_rating
  FROM voting AS iv
) AS avg
ORDER BY  bayesian DESC
LIMIT 1;

लेकिन यह प्रत्येक क्वेरी पर योग और औसत की गणना करेगा - इसे एक प्रदर्शन बम कहें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में REGEX_REPLACE () फ़ंक्शन कैसे काम करता है

  2. MySQL/MariaDB सर्वर को कैसे सुरक्षित करें

  3. एक mysql डेटाबेस में कितनी टेबल बनाई जा सकती हैं?

  4. Laravel:एक MySQL क्वेरी से एकल मान प्राप्त करना

  5. किसी अन्य डेटाबेस से चुनिंदा क्वेरी के साथ mysql तालिका अपडेट करें