Почему приведение AVG (intger_column) как DECIMAL возвращает минимум шесть знаков после запятой?

Рассмотрим это) запрос:

WITH Scores (score)
     AS
     (
      SELECT CAST(score AS INTEGER)
        FROM (
              VALUES (0), 
                     (10), 
                     (10)
             ) AS Scores (score)
     )
SELECT AVG(CAST(score AS DECIMAL(19, 8))) AS precision_eight, 
       AVG(CAST(score AS DECIMAL(19, 7))) AS precision_seven, 
       AVG(CAST(score AS DECIMAL(19, 6))) AS precision_six, 
       AVG(CAST(score AS DECIMAL(19, 5))) AS precision_five, 
       AVG(CAST(score AS DECIMAL(19, 4))) AS precision_four
  FROM Scores;

Результаты:

precision_eight | precision_seven | precision_six | precision_five | precision_four 
     6.66666666 |       6.6666666 |      6.666666 |       6.666666 |       6.666666 

Почему я всегда получаю минимум шесть десятичных знаков? Это задокументированное поведение?

(Я использую SQL Server 2008)

6
задан onedaywhen 15 October 2010 в 14:39
поделиться