Нужно получить через SQL - 1 месяц с сегодняшнего дня, показать день с большинством (пользовательских) авторизаций - PullRequest
0 голосов
/ 03 октября 2019

нет проблем с 1-й частью, есть проблема со 2-й частью

/ - показать последние 30 дней со вчерашнего дня - = /

SELECT *
FROM T_USER_AUDIT 
WHERE authorization_time >= DATEADD(day,-30, getdate())
and authorization_time <= getdate() 

/ - показать день с наибольшим количеством авторизации - /

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Вам необходимо настроить это для вашей базы данных (предполагается SQLServer)

SELECT TOP 1 CAST(authorization_time as DATE) topdate
FROM T_USER_AUDIT 
WHERE authorization_time >= DATEADD(day,-30, getdate())
and authorization_time <= getdate() 
GROUP BY CAST(authorization_time as DATE)
ORDER BY COUNT(*) DESC
0 голосов
/ 03 октября 2019

Вы ищете агрегацию и order by?

SELECT TOP (1) CONVERT(DATE, authorization_time), COUNT(*)
FROM T_USER_AUDIT 
WHERE authorization_time >= DATEADD(day,-30, getdate()) AND
      authorization_time <= getdate() 
GROUP BY CONVERT(DATE, authorization_time)
ORDER BY COUNT(*) DESC;

Вы говорите, что текущий код работает, но я с подозрением. GETDATE() возвращает компонент времени, который влияет на сравнение. Это означает, что у вас есть неполные дни для первого и последнего дня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...