查询以查找附加到每个ID的行数

时间:2016-09-27 16:21:10

标签: sql google-bigquery

需要找到每个id拥有的行数,并将number_of_id列添加到表中。我使用了以下代码,错误是"不明确的列名user_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;

2 个答案:

答案 0 :(得分:0)

这似乎可以满足您的需求:

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

答案 1 :(得分:0)

出现错误是因为您的子选择具有2个或更多具有相同名称的列,在本例中为“user_id”,您需要为其中一个创建别名。
或者,如果您在“[我的路径]”中有多个表,则可以为它们创建别名。

    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;