1.聚合函数count(),的括号里能放的是什么参数?目前只用过放*,别的没放过,能解释下么?
2.group by ,这个纠结很长时间了,后面跟很多列的话怎么分组啊,只用过跟一个列名的,但是有的时候为了需求,group by后面把select后面的所有字段名都加上,请问这时候是根据什么分组的,,,,
不解决问题且只会喷人的喷子离远点,俺的帖子不需要你的大驾光临,,欢迎帮顶和解答问题,(当然解决问题了喷我几句还是可以虚心接受的)
------解决方案--------------------
1、count() 这个括号,一种就是你说的放*,还有就是列,或者值,比如:
select COUNT(*),
COUNT(1),
COUNT(0),
COUNT(100),
COUNT(v)
from
(
select 1 as v union all
select 0 union all
select 2 union all
select null
)t
/*
(无列名) (无列名) (无列名) (无列名) (无列名)
4 4 4 4 3
*/
你会发现,前几个都一样,怎么最后一个是3呢,其实count对于括号中的数字,只要这个值不是null,都会统计为1次,也就是说count计算的次数,不是sum求和。
当有值为null时,那么是不统计的,所以这就是count(V)的值为3,因为v列中最后一行数据是null