2017-11-06 13 views
0
평균 작업

나는 양동이에 저장 구조 다음 한 : 나는 등급을 unnest 필요가,Unnest와 카우치베이스 주식회사

[ 
    { 
"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

파생 평균 값을 기준으로 결과를 필터링하려면 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;