表数据查询结果的处理

排序输出

** 使用ORDER BY子句可以对查询结果进行排序。**
语法格式: ORDER BY <列名> [ASC|DESC] , <列名>[ASC|DESC]
注意:如果在order by子句中使用多个列进行排序,则这些列在该子句中出现的顺序决定了对结果集进行排序的方式。
按班级升序列出“学生信息表”中学生信息,同一个班级的再按年 龄由小到大 排序

select * from dbo.学生信息表
order by ClName,year(getdate()) - year(Birthdate)

重定向输出

可以使用 into 子句把查询结果放到一个新表中
语法格式:
select [列名1,列名2…列名n ] INTO 新表名
from 表名
[ where 表达式]

查询“学生信息表”中全体男同学的学号、姓名、年龄和所在班级,并将结果保存到新表newstudent中

select StID 学号,StName 姓名,year(getdate()) - year(Birthdate) 年龄,ClName 班级 into newstudent
from dbo.学生信息表
where StSex = '男'

分组与筛选

① 分组
使用group by 子句可以实现分组统计,但是必须与聚合函数配合使用。

  • 语法格式:
    – SELECT [列名列表1], 汇总表达式
    – FROM 表名
    – GROUP BY 列名列表2
    –说明:列名列表1与列名列表2,二者相同。*
    分别统计学生选课表中每门课程的课程编号和平均成绩
    一般但语句中出现每一个中的啥,就把着每一个先进行分组
select Cno ,avg(Score) 平均成绩 from dbo.学生选课表
group by Cno

② 筛选
使用HAVING筛选子句可以为分组和聚合查询指定查询条件,功能与where子句类似。

语法格式:select [列名列表1],聚合函数(列名)
– from 表名
– [group by 列名列表]
– [having 条件表达式]

查询学生选课表中学生平均成绩大于85的课程的课程编号和平均成绩。(先查出来,然后才能筛选)

select Cno 课程号,avg(Score) 平均成绩 from dbo.学生选课表 
group by Cno
having avg(Score) > 85--having是在分组查询之后才被执行,是最后一步

注意:
对于分组统计查询 ,SELECT子句的属性列表有什么特点?
-获取数据的列名列表与参与分组的列名列表,二者必须相同。

WHERE 与 HAVING两者的区别?
①二者都为查询数据指定查询条件。
②where子句必须在group by子句之前,having子句必须在group by子句之后。
③where 子句中条件表达式不能包含聚合函数,having子句中条件表达式可以包含聚合函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值