计算给定时间段内同一记录存在的次数

时间:2018-07-20 14:18:58

标签: sql postgresql

我正在尝试编写查询以找出记录在给定的时间内是否存在多个。即使存在,同一记录也要重复多少次。

现在要解决此问题,我已经对记录进行了排序。

select * from table_name where date = ? and date > ? order by email

试图计算同一条记录的存在次数。但是我无法找出一种方法来计算同一条记录的存在次数。

这是一个问题。下图显示了基本数据结构。 enter image description here

这是一年的预期产量 enter image description here

上表保存了Xyz名和xyz@email.com数据三遍。并且名称Abc和电子邮件abc@email.com两次,第三条记录名称Def和电子邮件def@email.com两次。现在,我正在尝试找出一种方法,以使用单个查询找出在给定的时间内每个记录被重复的次数。我正在考虑对记录使用递归,并进行计数,直到对它进行排序后没有找到不同的记录。但是在每个记录上使用递归似乎很昂贵。

是否有更好的解决方案来解决此问题?

致谢

2 个答案:

答案 0 :(得分:2)

分组并计数。

SELECT column_to_compare1, column_to_compare2, COUNT(*)
FROM table_name
WHERE [date] BETWEEN @date1 AND @date2
GROUP BY column_to_compare1, column_to_compare2
HAVING COUNT(*) > 1 -- IF YOU WANT TO ONLY INCLUDE RECORDS WITH DUPLICATES

介于两者之间,因此您可以使用DATEADD调整日期。

答案 1 :(得分:0)

您可以使用COUNT函数执行此操作。

要使用您自己的查询执行此操作:

SELECT Name, Email, COUNT(*) AS count 
FROM table_name 
WHERE date BETWEEN '01/01/2005' AND '31/12/2005'
GROUP BY Name, Email

但是您的示例查询效果不佳,因此我无法为您提供更好的解决方案。这是此工作的示例:SQL Fiddle

编辑:更新了我的解决方案以符合您的预期输出。