代码之家  ›  专栏  ›  技术社区  ›  Lokesh Pandey haseeb

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

  •  1
  • Lokesh Pandey haseeb  · 技术社区  · 8 年前

    我正试图编写一个查询,以查明一个记录在给定的时间段内是否存在多个记录。即使存在,同一记录重复了多少次。

    现在,为了解决这个问题,我已经对记录进行了排序。

    select*from table_name where date=?和日期?通过电子邮件订购
    

    并尝试计数相同记录存在的次数。但我无法找到计算相同记录存在的次数的方法。

    这是一个问题。下图显示了基本的数据结构。

    这是一年的预期产量

    上表保存了xyzname andxyz@email.comdata三次。以及名称abc和emailabc@email.comtwo times and the third record namedefand emaildef@email.comtwo times.现在,我正试图找出一种方法,用一个查询找出在给定时间段内每个记录重复的次数。我正在考虑利用递归对一个记录进行计数,直到排序后它找不到另一个记录为止。但是对每个记录使用递归似乎很昂贵。

    有没有更好的解决办法来解决这个问题?

    谨致问候AME记录已重复。

    为了解决这个问题,我对记录进行了分类。

    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 回复  |  直到 8 年前
        1
  •  2
  •   llessurt    8 年前

    分组并计数。

    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调整日期。

        2
  •  0
  •   Barry Piccinni    8 年前

    您可以使用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

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