【问题标题】:Average of a date column in sql [duplicate]sql中日期列的平均值[重复]
【发布时间】:2016-02-01 19:32:34
【问题描述】:

我有一列数据类型为DATE。我希望计算该列的平均值。

该列包含相同的日期,但我仍想对该列执行平均值。我该怎么做?

【问题讨论】:

  • 您认为日期列的平均值是多少?
  • 定义2016-Feb-012015-Sep-232012-Jan-31的平均值是.....

标签: sql-server date


【解决方案1】:

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 就是您的价值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多