我有以下复印件:

id  | product id | actv mnths | 
123 | ClassA     |   11       |
123 | ClassC     |   1        |
456 | ClassC     |   7        |
456 | ClassA     |   5        |

我想通过只取actv mnths最高的那些来"删除"它,因此返回:

   id   | product id | actv mnths | 
    123 | ClassA     |   11       |
    456 | ClassC     |   7        |

我如何使用SQL来实现这一点?在哪些情况下它们是相等的,该如何处理?

推荐答案

SELECT T.id,T.product_id,T.actv_mnths
FROM
(
   SELECT id,product_id,actv_mnths,
   ROW_NUMBER()OVER(PARTITION BY id ORDER BY actv_mnths DESC)AS XCOL
   FROM YOUR_TABLE
)T WHERE T.XCOL=1

可以try 使用ROW_NUMBER-Function

Sql相关问答推荐

有没有一种正确的方法来利用SQL UNION来从三个潜在查询中 Select 最大值?

如何在SQL Server中列出从当前月份开始的过go 10年中的月份

Stack Exchange站点上的最短帖子(按正文长度计算,用户名为原始发帖(SEDE))

在SQL中返回缺省值,即使查询不返回任何结果

如何计算一个用户S的日常连胜?

PostgreSQL:按小时查看调整日期

两个不同星期的销售额,不加成一行

关于Postgres横向联接的谓词

在UNION查询中查找MIN

按用户和时间列出的SQL Group考勤列表

除了风格之外,还有什么理由更喜欢简单的CASE WHEN而不是搜索呢?

匹配 H[0-9][0-9] 但不匹配除字母 H 之外的任何字母

PostgreSQL分割字符串为子词并判断其是否存在于其他字符串中

基于 Snowflake 的最大值创建新列

Snowflake 中的对象是如何比较的?

查找具有相同连接列数据的所有记录

SQL 查询以填充单个列中的所有值

包含多行的 SQL 查询

pyspark 将列转换为行

如何优化sql请求?