Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用sql查找每个用户给出的平均评分_Sql - Fatal编程技术网

使用sql查找每个用户给出的平均评分

使用sql查找每个用户给出的平均评分,sql,Sql,该任务要求我使用procsql查找每个查看了5个以上食谱的用户给出的平均评分。数据集如下: user_id recipe_id date rating 231 245 17/02/2019 20 098 134 31/01/2019 1 ....... ....... 有人能告诉我如何得到结果吗 非常感谢您您应该有效地使用它来实现这些目标 试试下面 SELECT recipe_id, AV

该任务要求我使用procsql查找每个查看了5个以上食谱的用户给出的平均评分。数据集如下:

user_id   recipe_id   date           rating
231        245        17/02/2019      20 
098        134        31/01/2019      1
.......
.......
有人能告诉我如何得到结果吗

非常感谢您

您应该有效地使用它来实现这些目标

试试下面

SELECT recipe_id, AVG(rating)
FROM Table1
WHERE user_id IN (SELECT user_id, COUNT(recipe_id) FROM Table1 GROUP BY user_id HAVING COUNT(recipe_id) > 5)
GROUP BY recipe_id
您应该有效地使用这些工具来实现这些目标

试试下面

SELECT recipe_id, AVG(rating)
FROM Table1
WHERE user_id IN (SELECT user_id, COUNT(recipe_id) FROM Table1 GROUP BY user_id HAVING COUNT(recipe_id) > 5)
GROUP BY recipe_id

尝试使用sql连接

SELECT 
    r.user_id
    ,AVG(rating) avg
FROM recipe r
inner join (
        Select user_id
    from recipe 
    group by user_id
    having count(*) > 5
) c
on c.user_id =r.user_id
group by r.user_id

尝试使用sql连接

SELECT 
    r.user_id
    ,AVG(rating) avg
FROM recipe r
inner join (
        Select user_id
    from recipe 
    group by user_id
    having count(*) > 5
) c
on c.user_id =r.user_id
group by r.user_id

只需按分组即可。使用
HAVING
仅返回具有5种以上不同配方的用户

SELECT user_id, AVG(rating)
FROM tablename
GROUP BY user_id
HAVING COUNT(distinct recipe_id) > 5
Do
COUNT(distinct recipe_id)>5
只返回审核了5个以上不同配方的用户。(正如Serge所建议的那样。)


COUNT(recipe\u id)>5
可以多次包含相同的配方。

只需按
分组即可。使用
HAVING
仅返回具有5种以上不同配方的用户

SELECT user_id, AVG(rating)
FROM tablename
GROUP BY user_id
HAVING COUNT(distinct recipe_id) > 5
Do
COUNT(distinct recipe_id)>5
只返回审核了5个以上不同配方的用户。(正如Serge所建议的那样。)


COUNT(recipe\u id)>5
可能多次包含同一配方。

请添加您尝试的查询以及您遇到的问题。我们不替你做作业,我会改正的。我们为您做家庭作业。请添加您尝试的查询以及您遇到的问题。我们不替你做作业,我会改正的。我们为你做家庭作业。有人可能会争论你是否支持懒惰,如果是OP。但我认为更重要的是:你的答案可以通过添加解释来改进。有人可能会争论你是否支持懒惰,如果是OP。但我认为更重要的是:你的答案可以通过添加解释来改进(DISTINCT recipe_id)
可能是在用户可以多次查看receipt的情况下。@Serg,有意义。谢谢。@jarlh…如果允许重复,您应该只使用
COUNT(DISTINCT)
。否则它会带来不必要的开销。@GordonLinoff,因为我这里没有表定义,所以让OP选择。
COUNT(DISTINCT recipe_id)
可能是在用户可以多次查看receipt的情况下。@Serg,有意义。谢谢。@jarlh…如果允许重复,您应该只使用
COUNT(DISTINCT)
。否则它会带来不必要的开销。@GordonLinoff,因为我这里没有表定义,所以让OP选择。