PHP と mysql で評価システムを作成しましたが、トップ 5 を選択したいのですが、何かを作成しましたが、ユーザーが (最大で) 評価を追加すると、nr 1 ランキングになります。
皆さんはphpとmysqlでどのようにしていますか?
テーブルは次のようになります。
-- ID
-- 半ば
-- uid
-- 評価
評価は 1 ~ 5 の数字です
前もって感謝します!
@chaosが指摘するように、これがアイデアです。
SELECT `mid`, SUM(`rating`) AS `total`
FROM `rating`
GROUP BY `mid`
ORDER BY `total` DESC
LIMIT 5
ただし、評価が非常に少ない記事がトップ 5 に入らないようにするために、しきい値を追加して、X を超える評価の記事のみが結果に表示されるようにすることができます。これにより、おそらくトップ 5 のより正確な図が得られます。
SELECT `mid`, SUM(`rating`) AS `total`, COUNT(1) AS `nrRatings`
FROM `rating`
GROUP BY `mid`
HAVING nrRatings > 5 // This is the threshold. Only articles with more than
// 5 ratings will be considered
ORDER BY `total` DESC
LIMIT 5
SELECT `mid`, SUM(`rating`) AS `total`
FROM `rating`
GROUP BY `mid`
ORDER BY `total` DESC
LIMIT 5
あなたの言い回しを理解していれば、1 の評価が最高のように見えますか? ORDER BY は ASC にする必要があります。AVG() は SUM() よりも適切だと思います。しきい値のアイデアに完全に同意するので、次のようなものです(恥知らずなc / pの書き直し; thx @Machine :P):
SELECT `mid`, AVG(`rating`) AS `avg_rating`, SUM(1) AS `nrRatings` FROM `評価` GROUP BY `mid` nrRatings > 5 を持っている ORDER BY `avg_rating` ASC リミット5