,,,,简明扼要,,,小白基础语法问题。。。。。。求轻喷

bbos1994 2014-02-14 08:39:56
1.聚合函数count(),的括号里能放的是什么参数?目前只用过放*,别的没放过,能解释下么?
2.group by ,这个纠结很长时间了,后面跟很多列的话怎么分组啊,只用过跟一个列名的,但是有的时候为了需求,group by后面把select后面的所有字段名都加上,请问这时候是根据什么分组的,,,,




不解决问题且只会喷人的喷子离远点,俺的帖子不需要你的大驾光临,,欢迎帮顶和解答问题,(当然解决问题了喷我几句还是可以虚心接受的)
...全文
130 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 bbos1994 的回复:
[quote=引用 1 楼 yupeigu 的回复:] 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
没明白,留着以后看吧[/quote] 这个可以明白,必须得
  • 打赏
  • 举报
回复
引用 4 楼 bbos1994 的回复:
[quote=引用 3 楼 yupeigu 的回复:] group by后面把select后面的所有字段名都加上,请问这时候是根据什么分组的 分组和select 字段没关系,只是和group by 字段 有关系的
我说的因为要再select后面显示好多列,所以 group by后面跟好多字段名,请问这时候是根据group by后面的哪个字段分组的?[/quote] group by后面的所有字段分组
bbos1994 2014-02-15
  • 打赏
  • 举报
回复
引用 1 楼 yupeigu 的回复:
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
没明白,留着以后看吧
bbos1994 2014-02-15
  • 打赏
  • 举报
回复
引用 3 楼 yupeigu 的回复:
group by后面把select后面的所有字段名都加上,请问这时候是根据什么分组的 分组和select 字段没关系,只是和group by 字段 有关系的
我说的因为要再select后面显示好多列,所以 group by后面跟好多字段名,请问这时候是根据group by后面的哪个字段分组的?
  • 打赏
  • 举报
回复
group by后面把select后面的所有字段名都加上,请问这时候是根据什么分组的 分组和select 字段没关系,只是和group by 字段 有关系的
  • 打赏
  • 举报
回复
2、group by后面可以有很多列,具体放多少列,这个按照你的需求而定。 但是有一点是肯定的,就是如果某一列不在group by中,那么如果这列要在select中出现,那么必须出现在聚合函数中,比如: select a,b,count(c) from tb group by a,b 当然,如果b列不出现在select中也对: select a,count(c) from tb group by a,b 但是这样就有问题了,会报错: select a,b,c from tb group by a,b 所以c列要出现在select中,必须要包含在聚合函数中,也就是: select a,b,count(c),max(c),min(c),sum(c)..... from tb group by a,b
  • 打赏
  • 举报
回复
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

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧