Как использовать SQL получить количество строк, которые имеют равные значения? - PullRequest
1 голос
/ 11 ноября 2011

У меня есть таблица со столбцами: id и созданный (datetime)

id  created
6   2011-11-04 20:32:09.673
5   2011-11-04 20:32:09.673
4   2011-11-04 20:29:55.000
3   2011-11-04 20:29:55.000

Как написать sql, который будет возвращать количество записей, которые не имеют, имеют 2 или имеют более 2 одинаковых дат создания. Это может быть 3 отдельных sqls.

Спасибо

Ответы [ 2 ]

2 голосов
/ 11 ноября 2011

Если я правильно понимаю ваш вопрос, я считаю, что это должно сработать, возвращая любые даты создания, которые встречаются более одного раза.

Этот получит те, у которых более 2.

SELECT
    created
    ,COUNT(*) as [occurrences]
FROM
    tableName
GROUP BY
    created HAVING COUNT(*) > 2

Поменяйте местами> 2 для = 2, чтобы получить точно 2 и = 1, чтобы получить только 1 вхождение.

0 голосов
/ 11 ноября 2011

Попробуйте:

select case reccount
           when 1 then 'No matches'
           when 2 then 'Exactly 2 matches'
           else 'More than 2 matches'
       end as number_of_matches,
       count(*) as distinct_dates,
       sum(reccount) as record_count
from (select created,
             count(*) reccount
      from mytable
      group by created) v
group by
case reccount
           when 1 then 'No matches'
           when 2 then 'Exactly 2 matches'
           else 'More than 2 matches'
       end
...