Группировка в SQL Сервер, когда у вас есть столбец datetime2 - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть таблица в следующем формате:

Date                        Login
2020-03-12 01:42:00.0000000 agent2 
2020-03-12 01:42:00.0000000 agent2   
2020-03-12 01:43:00.0000000 pma
2020-03-12 01:43:00.0000000 agent2
2020-03-12 01:43:00.0000000 agent2 
2020-03-12 01:43:00.0000000 agent3  
2020-03-12 01:43:00.0000000 agent1 
2020-03-12 01:43:00.0000000 agent1 

Мне нужно сгруппировать ее по пользователям в минуту, однако при использовании группировки по в поле входа в систему (как показано ниже) я получаю ошибка «Столбец« Дата »недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY».

SELECT  Date , Login
  FROM connections
  GROUP BY login

Ожидаемый результат будет примерно таким:

Date                        Login    Connections
2020-03-12 01:42:00.0000000 agent2   2
2020-03-12 01:43:00.0000000 pma      1
2020-03-12 01:43:00.0000000 agent2   2
2020-03-12 01:43:00.0000000 agent3   1
2020-03-12 01:43:00.0000000 agent1   2

Это потому, что нельзя группировать, когда у вас есть столбец типа datetime2? Нужно ли создавать еще одну таблицу для подсчета соединений?

1 Ответ

1 голос
/ 21 апреля 2020

Вы не группируете по столбцу datetime2 в вашем запросе, поэтому, конечно, он не работает.

Вам необходимо добавить его в GROUP BY и затем добавьте COUNT:

SELCET [Date], --I suggest a better name, date is a different data type
       [Login], --I suggest a different name. LOGIN is a reserved keyword
       COUNT(IDColumn) --DI assume you have an ID you can count on?
FROM dbo.connections
GROUP BY [Date],
         [Login];
...