Вопрос выбора SQL: получить максимальное значение за каждый день - PullRequest
0 голосов
/ 03 сентября 2018

У меня проблема с выбором SQL, мне нужно получать максимальное значение для столбца (currentcount) за каждый день за период между DateDebut и DateFin, но возвращенный результат показывает несколько значений .

Мой оператор SQL:

DECLARE @dateDebut DATE, 
        @dateFin DATE, 
        @SITA_METIER VARCHAR(20), 
        @DEFSITE VARCHAR(20);

SET @dateDebut = '01/01/2017';
SET @dateFin = '31/12/2018';


SELECT DISTINCT
    CONVERT(DATE, attemptdate) AS Date, 
    MAX(currentcount) AS MAXUSERS
FROM
    logintracking 
WHERE
    attemptdate BETWEEN CONVERT(DATE, @dateDebut) AND CONVERT(DATE, @dateFin)
    AND logintracking.clientaddr IN ('10.118.254.21', '10.118.254.156') 
GROUP BY
    attemptdate, currentcount

Результат:

введите описание изображения здесь

Желаемый результат: только максимальное значение для столбца (currentcount) для каждого дня

PS: attemptdate тип - Timestamp, поэтому мне нужно привести его к простой дате.

Я также пытался использовать функцию «имея», но все равно получал несколько значений

1 Ответ

0 голосов
/ 03 сентября 2018

Вы уже используете GROUP BY. distinct не имеет смысла, поэтому distinct можно удалить.

, тогда вы просто измените CONVERT(Date,attemptdate) вместо attemptdate в Group by, и вам нужно только group by CONVERT(Date,attemptdate)

select CONVERT(Date,attemptdate) as Date, max(currentcount) as MAXUSERS
from logintracking 
where attemptdate between @dateDebut and @dateFin
  and logintracking.clientaddr in ('10.118.254.21', '10.118.254.156') 
group by CONVERT(Date,attemptdate)

Примечание:

Ваши @dateDebut и @dateFin уже имеют тип Date. Нет необходимости использовать функцию CONVERT.

...