SELECT sum(1) FROM table;和SELECT count(1) FROM table;
SELECTsum(1)FROMtable;----------------累加'1'列的总和;SELECTcount(1)FROMtable;-------------...
SELECT sum(1) FROM table;----------------累加'1'列的总和;
SELECT count(1) FROM table;--------------统计'1'列的总条数;
这里总和与总条数有何不同?谢谢!
应该是这样:
如果:
SELECT SUM(ID) FROM test_t;
SELECT COUNT(ID) FROM test_t;
则第一个返回的是ID列所有值的总和,第二个是ID列的行数。
我的意思是如果使用sum(1)就会返回第一列所有不为NULL的行数,如果使用sum(具体的列名),则会返回该列所有行所存数值的总和。
如果:
SELECT SUM(1) FROM test_t;
SELECT COUNT(1) FROM test_t;
则第一个和第二个都是返回第一列的行数。
准确来讲,只有count会统计NULL列,其它的聚合函数都会忽略NULL列,对? 展开
SELECT count(1) FROM table;--------------统计'1'列的总条数;
这里总和与总条数有何不同?谢谢!
应该是这样:
如果:
SELECT SUM(ID) FROM test_t;
SELECT COUNT(ID) FROM test_t;
则第一个返回的是ID列所有值的总和,第二个是ID列的行数。
我的意思是如果使用sum(1)就会返回第一列所有不为NULL的行数,如果使用sum(具体的列名),则会返回该列所有行所存数值的总和。
如果:
SELECT SUM(1) FROM test_t;
SELECT COUNT(1) FROM test_t;
则第一个和第二个都是返回第一列的行数。
准确来讲,只有count会统计NULL列,其它的聚合函数都会忽略NULL列,对? 展开
4个回答
展开全部
两者在对于null的记录处理不一样
count是统计所有行计数
sum是对不为null的行求和,
所以上两式结果在有null行的时候是不一样的(没有null的记录时结果一样)
msdn对聚合函数描述第1句就说了这个问题,如下:
聚合函数对一组值执行计算,并返回单个值。除了 COUNT 以外,聚合函数都会忽略空值。
http://msdn.microsoft.com/zh-cn/library/ms173454(v=SQL.90).aspx
-----------------------
lz还没弄懂么?
有这么一张表tmp
a
1
2
3
4
5
6
null
8
count(1)值是8
sum(1)值是7
-----------------------
我以为lz已经明白sum用法才会问sum(1)这种独特用法呢
看来还得全部解释一遍所有的聚合函数如下
还是上面的例子
sum(a)=29
sum(1)=7
count(a)=count(1)=count(*)=8
max(a)=8
min(a)=1
avg(a)=sum(a)/sum(1)=29/7=4.14 (如果a是int型的,那结果自动取整为4),注意avg也是跳过null行的,所以分母只能算sum(1)
看lz还有什么疑问
----------------------------
对
lz的分不好挣啊
看上面msdn的连接,里面有详细的例子
msdn写的不错,遇到有问题的,到里面看看还是不错的
msdn对聚合函数描述第1句就说了这个问题,如下:
聚合函数对一组值执行计算,并返回单个值。除了 COUNT 以外,聚合函数都会忽略空值。
http://msdn.microsoft.com/zh-cn/library/ms173454(v=SQL.90).aspx
count是统计所有行计数
sum是对不为null的行求和,
所以上两式结果在有null行的时候是不一样的(没有null的记录时结果一样)
msdn对聚合函数描述第1句就说了这个问题,如下:
聚合函数对一组值执行计算,并返回单个值。除了 COUNT 以外,聚合函数都会忽略空值。
http://msdn.microsoft.com/zh-cn/library/ms173454(v=SQL.90).aspx
-----------------------
lz还没弄懂么?
有这么一张表tmp
a
1
2
3
4
5
6
null
8
count(1)值是8
sum(1)值是7
-----------------------
我以为lz已经明白sum用法才会问sum(1)这种独特用法呢
看来还得全部解释一遍所有的聚合函数如下
还是上面的例子
sum(a)=29
sum(1)=7
count(a)=count(1)=count(*)=8
max(a)=8
min(a)=1
avg(a)=sum(a)/sum(1)=29/7=4.14 (如果a是int型的,那结果自动取整为4),注意avg也是跳过null行的,所以分母只能算sum(1)
看lz还有什么疑问
----------------------------
对
lz的分不好挣啊
看上面msdn的连接,里面有详细的例子
msdn写的不错,遇到有问题的,到里面看看还是不错的
msdn对聚合函数描述第1句就说了这个问题,如下:
聚合函数对一组值执行计算,并返回单个值。除了 COUNT 以外,聚合函数都会忽略空值。
http://msdn.microsoft.com/zh-cn/library/ms173454(v=SQL.90).aspx
展开全部
sum是那列的值相加,count是条数相加。例如有5条记录的值分别为:1、2、3、4、5 那么sum的结果是:15(数值的和) 而count是:5(5条数据)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sum是将该列的数据合部加起来,count是统计总共有多少条数据并不把那些列的数据相加
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个相加的总和
第二则是统计个表的总记录
SELECT sum(1) FROM table 表中1和数的总和
第二则是统计个表的总记录
SELECT sum(1) FROM table 表中1和数的总和
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询