2016-09-27 11 views
0

IDが持つ行数を見つけて、number_of_id列をテーブルに追加する必要があります。次のコードを使用しました。エラーは「あいまいな列名user_id」です。どんな解決策ですか?番号を検索するクエリ各IDに行が添付されます

オリジナルテーブル

user_id   product_name  release_year 
----------  -------------  ------------ 
id1    nameA    2012 
id2    nameB    2004 
id1    nameC    2008 
id3    nameC    2012 
id4    nameD    2016 

目的のテーブル

user_id   product_name  release_year number_of_id 
----------  -------------  ------------ ------------- 
id1    nameA    2012   2   
id2    nameB    2004   1 
id1    nameC    2008   2 
id3    nameC    2012   1 
id4    nameD    2016   1 

SQLクエリ:

SELECT 
    user_id, 
    product_name, 
    release_year, 
    COUNT(user_id)as number_of_id 
FROM (
    SELECT 
    user_id, 
    product_name, 
    release_year, 
    user_id 
    FROM 
    [my path:only have one table]  
    GROUP BY 
    user_id, 
    user_id) x 
    GROUP BY 
    user_id, 
    product_name, 
    release_year; 
+0

どのDBMSを使用していますか? –

+0

xの定義でuser_idを2回選択してグループ化します。そうかもしれない? –

+0

@a_horse_with_no_name BigQuery – user2592038

答えて

0

これは、あなたがやりたいように見えます:

select t.*, count(*) over (partition by user_id) as cnt 
from t; 
0

サブ選択に同じ名前の列が2つ以上あります。この場合は "user_id"のいずれかのエイリアスを作成する必要があります。
"[my path]"に複数のテーブルがある場合、そのテーブルのエイリアスを作成できます。

SELECT 
    user_id, 
    product_name, 
    release_year, 
    COUNT(user_id)as number_of_id 
FROM (
    SELECT 
    user_id, 
    product_name, 
    release_year, 
    user_id as user_id2 
    FROM 
    [my path]  
    GROUP BY 
    user_id, 
    user_id) x 
    GROUP BY 
    user_id, 
    product_name, 
    release_year; 
関連する問題