如何根据分组依据删除某些行?

西罗

我有一个棘手的问题。我需要从表中删除行,但只删除那些不是组中最大条目的行这是一个示例:分组为(月,水果)。

Month      | Fruit  | Quantity
2013-01-01 | Apple  | 5
2013-02-01 | Apple  | 6
2013-03-01 | Apple  | 7
2013-03-01 | Apple  | 8
2013-01-01 | Banana | 5
2013-02-01 | Banana | 6
2013-02-01 | Banana | 7

正确的过渡应该是(每个月+水果组中只能保留最高数量):

Month      | Fruit  | Quantity
2013-01-01 | Apple  | 5
2013-02-01 | Apple  | 6
2013-03-01 | Apple  | 8
2013-01-01 | Banana | 5
2013-02-01 | Banana | 7

(实际上,每个月每个水果我都需要有一个完整的日历水果表。因此,如果您设法通过添加2013-03香蕉来做到这一点,那不是问题,这是一个加号。)

表是一个声明的变量@tempTable,最好直接从中删除。我使用SQL Server 2008 R2。

亚伦·伯特兰
;WITH x AS 
(
  SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY Fruit, Month ORDER BY Quantity DESC)
  FROM @tempTable
)
SELECT * FROM x
--DELETE x 
WHERE rn > 1;

当您对结果确定要删除的正确行感到满意时,请摆脱SELECT并取消注释DELETE。

SQLfiddle演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据分组依据删除重复项-SQL

来自分类Dev

如何根据某些列删除重复的行

来自分类Dev

删除-TERADATA分组依据

来自分类Dev

PostgreSQL 删除分组依据

来自分类Dev

根据分组依据中的最大列选择行

来自分类Dev

根据列删除某些行

来自分类Dev

从分组依据中删除列

来自分类Dev

如何仅在一行中使用分组依据?

来自分类Dev

根据条件分组和删除行

来自分类Dev

根据某些条件删除表中的行

来自分类Dev

熊猫:根据某些条件删除重复行

来自分类Dev

如何显示排序依据和分组依据

来自分类Dev

行由于分组依据而倍增

来自分类Dev

MySQL限制行/分组依据

来自分类Dev

根据条件和分组依据更新列

来自分类Dev

根据列分组依据列出索引

来自分类Dev

根据条件和分组依据区分

来自分类Dev

根据“选择计数(*)分组依据”填充列

来自分类Dev

根据日期顺序查询分组依据

来自分类Dev

如何使用分组依据语句

来自分类Dev

根据通用字段将多行转换为一行(分组依据)

来自分类Dev

根据分组变量,如何从R中的数据帧中删除第n行?

来自分类Dev

如何根据某些条件在数据框中删除重复的行?

来自分类Dev

如何根据条件删除某些组中的某些观测值

来自分类Dev

如何根据每个组(分组依据)的 2 个最大值计算总和?

来自分类Dev

如何根据CSV中的第一列在Dataweave中实现分组依据

来自分类Dev

从 LINQ QUERY 中删除分组依据

来自分类Dev

根据Python中的某些条件删除所有行

来自分类Dev

根据元素之间的某些匹配项删除数组行