SQL中 group by ....having

1、

 insert into 学生 values('1001','刘德华','男',40,'计算机')
   insert into 学生 values('1002','周杰伦','男',30,'中文')
   insert into 学生 values('1003','章子怡','女',28,'数学')
   insert into 学生 values('1004','林心如','女',25,'中文')
   
   insert into 课程 values(1,'数据库',4)
   insert into 课程 values(2,'数学',5)
   insert into 课程 values(3,'古汉语',3)
   
   insert into 选修 values('1001',1,92)
   insert into 选修 values('1002',3,80)

2、

 group by与having连用, having子句将对group by子句选择出来的结果进行再次筛选,最后输出符合having子句中条件的记录。如果having子句中包含多个条件,那么这些条件将通过逻辑运算符(and、or或not)组合在一起。
 having子句的语法与where子句的语法类似,唯一不同的是having子句中可以包含聚合函数,而且having子句只能引用选择列表中出现的字段.

先查每个学号下学生的平均成绩:

select  k.学号,AVG(k.成绩)as 平均成绩 from XX k group by k.学号
例子:查找平均成绩在85分以上的学生的学号和平均成绩:

select  k.学号,AVG(k.成绩)as 平均成绩 from XX k group by k.学号
having AVG(k.成绩)>85
【例】查找中文专业平均成绩在90分以上的学生的学号和平均成绩
select xs.学号, avg(成绩) as 平均成绩 from xk inner join xs on xk.学号=xs.学号 where 所在系='中文' group by xs.学号 having avg(成绩)<90
注意:
    1、在having子句中,可以引用任何出现在查询列表中的字段。
    2、只能在group by中使用having子句。

2、GROUP BY.....Having

where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行

having 子句的作用是筛选满足条件的组,即在分组之后过滤数据条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

having 子句被限制子已经在SELECT语句中定义的列和聚合表达式上。通常,你需要通过在HAVING子句中重复聚合函数表达式来引用聚合值,就如你在SELECT语句中做的那样。例如:

SELECT A COUNT(B) FROM TABLE GROUP BY A HAVING COUNT(B)>2

select  count(p.TestType) as 'count',p.TestType  from dbo.LbtProjectInfo  p  group by p.TestType having p.TestType=2



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值