私は両方の方が好きな映画のa.user_idとb.user_id数を返すHIVEクエリを作成しようとしています。クエリを実行すると、a.user_id、b.user_id、count、および一連のムービーが取得されます。また、b.user_id、a.user_id、カウント、およびムービーのセットも取得します。クエリのフィルタ逆ペアリング
私の質問は、どのようにしてa.user_id、b.user_id数、およびムービーセットのみに制限するのですか。
A、B、25、映画
B、Aのリスト、:私はすでにON(a.movie_id = b.movie_id AND a.user_id < b.user_id)
SELECT a.user_id, b.user_id, count(*) AS num, collect_set(m.movie_title)
FROM ratings a
JOIN ratings b
ON (a.movie_id = b.movie_id)
JOIN movies m
ON (a.movie_id = m.movie_id AND b.movie_id = m.movie_id)
WHERE (a.user_id <> b.user_id)
GROUP BY a.user_id, b.user_id;
ORDER BY num DESC;
にライン4をchaningによってRemove reverse duplicates from an SQL queryに電流出力を提案された解決策を試みてきた
25、ムービー一覧
希望出力:
A、B、映画
をなぜ提案されたソリューションが動作しませんか? –
私は自己結合をしていて、どこのステートメントを変更するときに自分自身のuser_idに参加し始めたからだと思います。たとえば、ファイルサイズは172.9kbでしたが、それを変更するとファイルサイズは17.8MBになりました。私が出力を確認すると、一致するフィルムの数は6-138の範囲からなり、現在は300,000の大きさになっています。 –