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 BY
,distinct
没有意义,所以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
函数。
我的 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 BY
,distinct
没有意义,所以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
函数。