Я наткнулся на вопрос (в тесте) о том, какие агрегатные функции применимы к столбцам типа DATE. Итак, насколько я понимаю, COUNT будет просто подсчитывать количество строк, а MIN и MAX возвращают самую раннюю / последнюю дату. Однако меня немного смущают функции SUM и AVG. Будут ли они просто преобразовывать значения DATE в целые числа и вычислять сумму / среднее для этих целых чисел? Или я здесь не прав? В любом случае, одинаково ли такое поведение во всех реализациях SQL? Заранее спасибо.
SQL: агрегатные функции со столбцами типа DATE
Ответы (1)
В MS SQL Server нельзя вызывать оператор SUM
для типов datetime
, а также нельзя вызывать оператор AVG
.
MSDN перечисляет типы возвращаемых значений оператора SUM
здесь:
http://msdn.microsoft.com/en-us/library/ms187810.aspx.
Это также действительная ссылка для типов, для которых вы можете вызывать оператор SUM
.
РЕДАКТИРОВАТЬ: В ответ на ваш комментарий вы можете использовать такой сайт, как sqlfiddle, для тестирования различных реализаций
http://www.sqlfiddle.com/#!3/22cee/1
Учитывая, что внутреннее хранилище datetime
не стандартизировано, я утверждаю, что от него не следует зависеть, чтобы какая-либо база данных возвращала SUM
или AVG
результаты предсказуемым образом ... лучше не делать этого вообще. ..
person
Matthew
schedule
14.06.2012
Это интересно, потому что я попробовал SUM и AVG для столбца типа DATE в MySQL, и он вернул только это - сумму и среднее значение целых чисел. Спасибо за ваш ответ!
- person sdds; 14.06.2012
COUNT(*)
подсчитывает количество строк, ноCOUNT(somedatetypecolumn)
подсчитывает количество строк, гдеsomedatetypecolumn
не равно NULL. - person Mark Byers   schedule 14.06.2012