我将以下结构保存在存储桶中:
[
{
"Grouplens_1M": {
"genres": [
"Thriller",
"Drama"
],
"movieId": 3952,
"ratings": [
{
"rating": 4,
"userId": 23
},
{
"rating": 5,
"userId": 36
},
{
"rating": 4,
"userId": 52
}
],
"title": "Contender, The (2000)"
}
}
]
现在我需要获得平均评分均高于3的所有标题。我发现,我需要取消评级,然后使用AVG获得平均值。但它没有用。在试图弄清楚如何解决这个问题之后,我来到了这个:
SELECT g.title, AVG(r_item.rating) AS avg_r
FROM Grouplens_1M AS g
UNNEST ratings r_item
WHERE r_item > 4.0
GROUP BY g.title
在查询执行时间后,它会显示一个结果。但是WHERE子句不正确。它似乎忽略了这个陈述,因为它向我展示了所有平均评级的电影。
答案 0 :(得分:0)
由于您希望根据派生的平均使用HAVING
的值过滤掉结果。 WHERE
将用于限制为查询考虑的文档。
尝试
SELECT g.title, avg_r
FROM Grouplens_1M AS g
UNNEST ratings r_item
GROUP BY g.title
LETTING avg_r = AVG(r_item.rating)
HAVING avg_r > 4.0;