我们有这种格式的数据.

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

我需要的是,对于每一项DC明智的计数所有俱乐部. 回答应该是:

item dc   club_count
1    100   2
1    200   3
1    300   1
2    100   1
2    200   3

我try 了基本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;

如果您真的想使用窗口函数来实现这一点,您可以try :

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;

Sql相关问答推荐

在数据分区内执行确定

跨多列的PostgreSQL非不同对

为什么Prisma生成唯一索引,而不是基于方案上的唯一列约束?

如果元素包含通过SQL指定的字符串,则过滤掉数组元素

如何在SQL Server中拆分包含字符和数字的列?

找到最新的连线

从结果SQL查询中排除空值

多条件SQL排序行为

如何在多列上编写具有不同条件的查询?

违反了完整性约束-值存在时找不到父键

在Oracle SQL中按月生成日期

如何使用聚合连接两个表

将具有嵌套 XML 的列转换为 SQL 中的表格格式?

如何根据 Google BigQuery 中的特定列值连接一列的 N 行?

在presto sql中解析带有区域的时间格式

PostgreSQL中如何提取以特定字符开头的字符串中的所有单词?

比使用NOT EXISTS更高效的SQL删除方法是什么?

COBOL\DB2作业(job)需要帮助?快来获取专业指导!

PostgreSQL 如何在一组项目及其数量上找到完全相同的订单?

如何比较同一张表中的行并进行相应更新