1

現在、last-fm データセットのサブセットからすべてのノイズを除外しており、このサブセットの上に推奨システムを構築しようとしています。

基本的に、私のデータセットにはデータベースに次のものが含まれています。

ユーザー ID | アーティスト ID | アーティスト | トータルプレイズ

例:

00000c289a1829a808ac09c00daf10bc3c4e223b 8bfac288-ccc5-448d-9573-c33ea2aa5c30 赤唐辛子

私が達成したいのは、すべてのユーザーのリストと、特定のアーティストを聴いた合計再生数です。たとえば、レッド ホット チリ ペッパーの整数 (totalplays) を含むリストです。これに関する問題は、次のクエリを実行するときです。

SELECT userid, totalplays FROM dataset WHERE artist = 'red hot chili peppers'レッド ホット チリ ペッパーズを少なくとも 1 回聴いたユーザーのみを取得します (データセットには、アーティストを聴いたことがないユーザーのエントリは含まれません)。

レコメンデーション システムを構築できるように、これらの結果セットの 2 つをピアソンの相関と一致させるために、これらの整数も含めたいと思います。(私はすでにこれを実装しています)。

すべての個別のユーザー ID を含む一時テーブルを作成してから、データセットの内部結合で再生量を更新しようとしました。残念ながら、それには時間がかかりすぎます。

SQLの可能性については聞いたことがありIF EXISTSますが、詳しくは知りません。誰でも私を正しい方向に向けることができますか?

繰り返しますが、たとえば、'red hot chili peppers' というアーティストのユーザーの totalplays を取得したいと思います (合計を計算する必要はありません。これは既に行っているためです!)。ユーザーがそれらを聞いているデータセットにレコードがない場合でも (したがって、このユーザーには 0 が返されます)。

前もって感謝します!

4

1 に答える 1

2

これを試して

SELECT A.USERID, coalesce(X.totalplays,0) totalplays
FROM (SELECT DISTINCT USERID FROM dataset) A
LEFT OUTER JOIN  (
SELECT userid, totalplays FROM dataset 
WHERE artist = 'red hot chili peppers') X ON A.userid = X.userid

別のユーザーテーブルがある場合

SELECT A.USERID, coalesce(X.totalplays,0) totalplays
FROM UserTable A
LEFT OUTER JOIN  (
SELECT userid, totalplays FROM dataset 
WHERE artist = 'red hot chili peppers') X ON A.userid = X.userid
于 2013-01-04T19:56:00.423 に答える