0

ユニークな名前の最高評価の記事を選択する必要があります。私はこの記事のテーブルを持っています:

id     name   
---------------
1    Article 1 
2    Article 1
3    Article 2

および投票テーブル:

article_id   rating
-------------------- 
   1           3
   1           2
   3           1

記事を名前でグループ化すると、同じ名前の記事でも平均評価からカウントされます。

SELECT article.name, AVG(vote.rating) rating
FROM article
LEFT JOIN vote ON vote.article_id = article.id
GROUP BY article.name 

しかし、私は最高評価の記事だけの平均評価を取得したいと考えています。誰もこれを行う方法を知っていますか? アドバイスありがとうございます。

編集:私はこの結果を取得したい:

    name       average_rating
   --------------------------
   Article 1   2.5
   Article 2   1
4

3 に答える 3

1

これは私が探していたものです:

SELECT result.id, result.name, result.rating
FROM (
    SELECT article.id AS id, article.name AS name, AVG(vote.rating) AS rating
    FROM article 
    LEFT JOIN vote ON vote.article_id = article.id
    GROUP BY article.id
    ORDER BY rating DESC
) AS result
GROUP BY result.name

おそらく、もっとうまく処理できますが、これはうまくいきます。ご協力ありがとうございます。

于 2013-02-10T20:18:17.117 に答える
0

代わりに記事IDでグループ化する必要があります。これは、記事ごとに一意であるためです。

SELECT article.name, AVG(vote.rating) rating
FROM article
LEFT JOIN vote ON vote.article_id = article.id
GROUP BY article.id
于 2013-02-10T18:39:08.353 に答える
0

代わりに article_id でグループ化してみましたか?

于 2013-02-10T18:14:02.410 に答える