SQL получает количество строк между датами

Допустим, у меня есть эта таблица.

Id CId Date
1  1   2020-12-25 08:44:04.247
2  2   2020-12-25 08:44:04.566
3  2   2020-12-25 08:44:04.111

Я хочу получить CID, которые имеют более одного значения с одинаковой датой, часом, минутами и секундами (мы должны игнорировать миллисекунды)

Например, в этом случае я хочу получить CId = 2:

Или я хочу получить такие результаты

CId CountWIthSameDate  Date
1    1                 2020-12-25 08:44:04
2    2                 2020-12-25 08:44:04
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
163
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если я правильно понимаю, вы можете использовать оконные функции и округлить дату до ближайшей секунды:

select t.*
from (select t.*,
             count(*) over (partition by dateadd(second, datediff(second, t.date, 0)) as cnt
      from t
     ) t
where cnt > 1;

Это возвращает исходные строки с дубликатами, а не количество.

Если вам просто нужны результаты в виде агрегации:

select cid, dateadd(second, datediff(second, t.date, 0) as date,
       count(*)
from t
group by cid,
         dateadd(second, datediff(second, t.date, 0);

Вы можете попробовать сделать что-то вроде этого:

SELECT Cid, Count(1) CountWIthSameDate, Format([Date], 'yyyy-MM-dd hh:mm:ss') [Date] FROM TableName Group By Cid, Format([Date], 'yyyy-MM-dd hh:mm:ss')

Другие вопросы по теме