对具有重复项(字符串值)的列进行分组

Posted

技术标签:

【中文标题】对具有重复项(字符串值)的列进行分组【英文标题】:Group by on a column with duplicates (string values) 【发布时间】:2016-05-12 12:29:08 【问题描述】:

我必须在下表中创建一个 MS SQL 查询。

考虑我有以下单个表:

我想通过在 column1 上分组得到以下结果:

我怎样才能做到这一点?

【问题讨论】:

为这个结果做了什么努力? 为什么column2column3N/A @Ullas 因为它没有意义,所以我不需要这些信息。而且,不可能在一行上显示这些 SQL query for finding records where count > 1的可能重复 【参考方案1】:

COUNTGROUP BY 一起使用。

查询

SELECT column1, 'N/A' as column2, 'N/A' as column3,
COUNT(column1) AS column4_amount
FROM your_table_name
GROUP BY column1;

【讨论】:

我还可以编辑此查询,使其仅显示包含 2 个或更多重复项的结果吗?如果它只出现一次,那么我不想显示它。 @Ozkan 使用HAVING count(1) > 1,检查我的答案。【参考方案2】:
SELECT column1, 'N/A' as column2, 'N/A' as column3, COUNT(1) AS column4_amount
FROM table_name
GROUP BY column1

如果您不需要 column2 和 column3,请尝试以下操作:

SELECT column1, COUNT(1) AS column4_amount
FROM table_name
GROUP BY column1

更新: 如果您想要多次出现的结果,请尝试以下操作:

SELECT column1, 'N/A' as column2, 'N/A' as column3, COUNT(1) AS column4_amount
FROM table_name
GROUP BY column1
HAVING COUNT(1) > 1

【讨论】:

【参考方案3】:

您应该将GROUP BYcolumn1 一起使用,因为GROUP BY 可以帮助您对具有相同名称的所有项目进行分组。

要从同名表中计算一组项目下的总项目数,请使用 COUNT 聚合函数。现在您需要检查每个项目是否存在多次。使用 HAVING 子句,该子句接受所有包含两个以上项目的组。

SELECT column1, 'N/A' as column2, 'N/A' as column3, COUNT(1) AS column4_amount
FROM your_table_name
       GROUP BY column1
       HAVING COUNT(1) > 1

【讨论】:

虽然此代码可能会回答问题,但提供有关 why 和/或 如何 回答问题的额外上下文将显着改善其长期价值。请edit你的答案添加一些解释。

以上是关于对具有重复项(字符串值)的列进行分组的主要内容,如果未能解决你的问题,请参考以下文章

在熊猫数据框中对重复的列 ID 进行分组

如何按id python按一列顺序对两列进行分组[重复]

分组顺序重复值 sqlite

对具有相同组成的字符串进行分组

有没有一种简单的方法可以对 Pandas DataFrame 中的列进行分组?

如何按 MySQL 中的最后一个重复项对记录进行分组?