2012-06-14 31 views
3

我偶然发现了一个关于哪些聚合函数适用于DATE类型列的问题(在测试中)。所以,据我了解,COUNT只会计算行数,而MIN和MAX会返回最早/最近的日期。不过,我对SUM和AVG函数有点困惑。他们只是将DATE值转换为整数并计算这些整数的总和/平均值?还是我在这里错了?无论如何,这种行为在所有SQL实现中是否一致? 在此先感谢。SQL:具有DATE类型列的聚合函数

+4

“COUNT只会计算行数”。其实这不太正确。你是对的,'COUNT(*)'计算行数,但是'COUNT(somedatetypecolumn)'计算'somedatetypecolumn'不为NULL的行数。 –

+0

哦,对,我在那里不够明确。 – sdds

回答

5

在MS SQL Server中您不能在datetime类型上调用SUM运算符,也不能调用AVG运算符。

MSDN列出了返回类型这里SUM运营商:
http://msdn.microsoft.com/en-us/library/ms187810.aspx

这也是对您可能调用SUM操作类型的有效参考。

编辑:在回答您的意见,您可以使用这样的网站sqlfiddle测试各种实现

http://www.sqlfiddle.com/#!3/22cee/1

考虑的datetime后端存储不规范,我主张它应该不是可以依赖于任何数据库返回SUMAVG结果可预测的方式....最好不要这样做...

+1

这很有趣,因为我在MySQL的DATE类型列上尝试了SUM和AVG,并且它仅返回了 - 整数和平均值的整数。谢谢您的回答! – sdds