根据特定条件查找重复值
Posted
技术标签:
【中文标题】根据特定条件查找重复值【英文标题】:Find duplicate values based on specific criteria 【发布时间】:2021-12-27 13:25:51 【问题描述】:如果这个问题已经得到解答,我很抱歉。我对 SQL 还是很陌生。
我有一个包含客户数据的数据库。
数据库中的每一行都包含一个 customer_number 和一个 end_record_date(如果客户仍处于活动状态,则为过去的日期或“00:00:00”)。
我需要在数据库中找到至少出现两次的所有客户行(因此他们的 customer_number 至少出现在两行上)。但我只想获取特定行,如果该 customer_number 至少在两行上处于活动状态(因此该特定客户的 end_record_date 的值需要在至少两行上为“00:00:00”)。
所以这就是我想要找到的:
row_id | customer_number | end_record date |
---|---|---|
1 | 12345 | '00:00:00' |
346 | 7568 | '2021-01-01' |
89 | 7568 | '00:00:00' |
1287 | 12345 | '00:00:00' |
在上面的示例中,我希望返回第 1 行和第 1287 行,因为它们符合我的条件。 rowid 89 和 346 不符合我的条件
我将如何处理这个问题?
我在 .sd3b 数据库上使用 sqlitetudio
【问题讨论】:
【参考方案1】:如果您按customer_number
分组并在HAVING
子句中设置条件,则可以获得您想要的customer_number
s:
SELECT customer_number
FROM tablename
GROUP BY customer_number
HAVING SUM(end_record_date = '00:00:00') >= 2;
要获取表中所有符合条件的行,请使用运算符IN
:
SELECT *
FROM tablename
WHERE customer_number IN (
SELECT customer_number
FROM tablename
GROUP BY customer_number
HAVING SUM(end_record_date = '00:00:00') >= 2
);
请参阅demo。
【讨论】:
以上是关于根据特定条件查找重复值的主要内容,如果未能解决你的问题,请参考以下文章
Pandas:如何根据特定列上特定值的条件选择数据框中的行[重复]
如果地图值等于特定文本,则有条件地呈现 <a href> [重复]