我们有这种格式的数据。
item club dc
1 2 100
1 3 100
1 4 200
1 5 200
1 6 200
1 7 300
2 3 100
2 4 200
2 5 200
2 6 200
我需要的是,对于每个项目,对所有俱乐部进行明智的计数。 回应应该是:
item dc club_count
1 100 2
1 200 3
1 300 1
2 100 1
2 200 3
我尝试了基本的
select item,dc, count(dc) over(partition by dc) from table
,但给出了完全错误的答案。我还需要按 cloub_count 按项目进行排序。所以最终的结果应该是这样的:
item dc club_count
1 200 3
1 100 2
1 300 1
2 200 3
2 100 1
这里只需要一个简单的聚合,不需要窗口函数:
SELECT item, dc, COUNT(*) AS club_count
FROM yourTable
GROUP BY item, dc
ORDER BY item, dc;
如果你真的想使用窗口函数来做到这一点,你可以尝试:
WITH cte AS (
SELECT item, dc, COUNT(*) OVER (PARTITION BY item, dc) club_count
FROM yourTable
)
SELECT DISTINCT item, dc, club_count
FROM cte
ORDER BY item, dc;