人々がテキスト メッセージを投稿する Web サイトを設計しています。ユーザーはメッセージを評価できます (1 ~ 5)。この評価を表に記録して、次のことを行います。
- 同じ投稿に対して 1 人のユーザーによる複数の評価を避ける
- 投稿の平均評価を取得できるようにします。
投票数も重要です。たとえば、3 票中 10 票の投稿 (30 票) は、5 票中 2 票の投稿 (10 票) よりも価値があります。このメッセージが 20 件あるページを表示しているときに、それらの評価も表示したい
これは私の評価表です:
create table ratings(
[id] int primary key identity(1,1),
[msgid] int,
[uid] int,
[rating] tinyint
)
各メッセージの評価の合計と各メッセージの評価の数を含むメッセージ テーブルから 20 個のメッセージを取得したいと考えています。
select
msg.id, msg.text,
sum(rate.rating),
count(rate.id)
from
messages as msg
inner join
ratings as rate on msg.id = rate.msgid
group by
msg.id
誰でもSQLクエリコードを手伝ってもらえますか?