【发布时间】:2016-02-01 19:32:34
【问题描述】:
我有一列数据类型为DATE。我希望计算该列的平均值。
该列包含相同的日期,但我仍想对该列执行平均值。我该怎么做?
【问题讨论】:
-
您认为日期列的平均值是多少?
-
定义
2016-Feb-01、2015-Sep-23和2012-Jan-31的平均值是.....
标签: sql-server date
我有一列数据类型为DATE。我希望计算该列的平均值。
该列包含相同的日期,但我仍想对该列执行平均值。我该怎么做?
【问题讨论】:
2016-Feb-01、2015-Sep-23和2012-Jan-31的平均值是.....
标签: sql-server date
SQL:
DECLARE @MinDate DATE;
DECLARE @MaxDate DATE;
DECLARE @DaysRange INT;
DECLARE @MidDate DATE;
DECLARE @AverageDate DATE;
SELECT TOP 1 @MinDate = [Date] FROM DateTable ORDER BY [Date] ASC;
SELECT TOP 1 @MaxDate = [Date] FROM DateTable ORDER BY [Date] DESC;
SET @DaysRange = DATEDIFF(DAY, @MinDate, @MaxDate);
SET @MidDate = DATEADD(DAY, @DaysRange / 2, @MinDate)
SELECT TOP 1 @AverageDate = [Date] FROM [DateTable] WHERE [Date] < @MidDate ORDER BY [Date] DESC
SELECT
@MinDate AS [MINDATE],
@MaxDate AS [MAXDATE],
@DaysRange AS [DAYS IN RANGE],
@MidDate AS [MIDDATE],
@AverageDate AS [AVERAGE DATE (WHAT YOU LOOKING FOR)]
我使用了这个“算法”:
获取列中最小和最大日期之间的天数(这是我们的@DaysRange)。然后将此数字除以 2 并添加到最小日期 (@MidDate) - 这是列中的实际平均日期。如果您正在从列记录中寻找平均日期,那么@AverageDate 就是您的价值。
【讨论】: