同じビデオを複数回見たすべての用途を見つけなければならない場合は、次のクエリを使用しています。oracle sql - withとgroup byを持つことで参加できますか?
SELECT userid AS users,video_id
FROM watching_list GROUP BY userid , video_id HAVING COUNT(*) > 1;
^^そうでしょうか。 watching_listに、ユーザーが視聴したuseridとvideoidとdatetime stampが含まれている場合。
私がしたいことは、useridに基づいてuserテーブルに参加し、useridだけでなくユーザーの名前なども調べることです。
私は単純な参加を試みましたが、もちろん私はそれを壊しました。それを行うには
あなたはシンプルに参加して、グループに追加すると動作しますが、すべてでサブクエリを必要といけない変更を引き起こすことはありません
group by
に同一人物の追加情報を追加して、同じユーザーでなければなりません。ユーザーIDがグループに残っている限り、ユーザーに基づいてグループに追加情報を追加すると何もしません –私は実際のデータセットの実行計画を見ていきます。 これは、「複数回」の条件を満たすユーザーがほんの少数の場合、インライン・ビューが最初に実行され、次にユーザー表にアクセスするためにネストされたループ・ジョインが実行されるためです。 joinメソッドでは、おそらく、watching_listとusersの間のハッシュ結合が実行され、集約が実行されます。実際、group-clause句にはより多くのバイトが含まれているため、ジョイン・ファースト・クエリでは集約にコストがかかります。 これらの理由から、私はJustin'sを超えたMarcのソリューションを好んでいます。 –
@DavidAldridge私はこれが良いかもしれないことに同意しますが、OPプロファイルが両方の方法で確実であることを示唆します。 –