如何执行以下SQL?

时间:2011-03-27 03:02:28

标签: sql

我的数据库架构如下:

match_id,user_id,rating

匹配成对出现,例如

7, 2947, 5
7, 273, 4

在匹配7的上述示例中,用户293将用户2947评为5.用户273被用户2947评为4分。如何执行产生以下输出的查询

rater_id,评级,NUM_RATINGS

其中列出了评分者,其相关评级和评分数量。因此,例如,如果用户2947给出了10个4和11个5,我希望看到:

2947,4,10
2947,5,11

3 个答案:

答案 0 :(得分:4)

加入桌子:

SELECT r1.user_id, r2.rating, count(*)
FROM Ratings r1
INNER JOIN Ratings r2 ON r2.match_id=r1.match_id AND r2.user_id<>r1.user_id
GROUP BY r1.user_id, r2.rating

答案 1 :(得分:0)

看起来像一个两列组。看看这个tutorial

答案 2 :(得分:0)

据Somid3所说,我认为这是两个专栏组。试试这个。

CREATE TABLE #match(match_id int,user_id int ,rating int)
SELECT m1.user_id,m1.rating, COUNT(m1.Rating)
FROM 
#match m1
Group by m1.user_id,m1.rating