Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Peringkat MySQL Dengan Berat

Langkah pertama adalah menghitung avg_num_votes dan avg_rating :

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

Jika Anda dapat hidup dengan kesalahan kecil, mungkin cukup baik untuk menghitungnya sesekali.

Sekarang menggunakan rumus dan nilai di atas, Anda dapat menjalankan kueri penimbangan. Sebagai pengoptimalan kecil, saya menghitung sebelumnya avg_num_votes * avg_rating dan beri nama 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;

Sunting

Anda dapat menjalankan ini sebagai gabungan:

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;

Namun ini akan menghitung jumlah dan rata-rata pada setiap kueri - sebut saja ini sebagai bom kinerja.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menampilkan gambar (tipe bolb) di halaman jsp dari mySql DB di Struts 2 menggunakan Hibernate

  2. pymssql.OperationalError:pesan kesalahan DB-Lib 20009, tingkat keparahan 9

  3. Temukan garis lintang/bujur terdekat dengan kueri SQL

  4. SQL ORDER BY menggunakan pernyataan yang disiapkan

  5. Cara Mendapatkan Catatan 15 Hari Terakhir di MySQL