需要找到每个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;
答案 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;