SQL select 问题:获取每天的最大值

SQL select issue : get max value for each day

我的 SQL select 有问题,我需要在 DateDebut 期间每天获取列 (currentcount) 的最大值] 和 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

结果:

enter image description here

期望的结果:每天只有列 (currentcount) 的 最大值

PS:attemptdate类型是Timestamp,这就是为什么我需要把它转换成一个简单的日期。

我也尝试使用 'having' 函数但仍然得到多个值

你已经使用了GROUP BYdistinct没有意义,所以distinct可以去掉。

那么你只需要修改CONVERT(Date,attemptdate)而不是Group by中的attemptdate,只需要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 函数。