资源描述:
《SQL_Server2005分组统计与多表关联查询》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第五章分组统计与多表关联查询回顾编写SQL语句查询一个月前的订单信息。查询作者表中姓名以“李”开头的作者信息。查询前20%的图书信息。预习检查什么是分组统计?多表联接查询分为哪几种,为什么要使用多表联接查询?提问本章任务使用使用T-SQL语句对Authors和Books表进汇总统计。对多表进行关联查询。本章目标掌握聚合函数的使用。掌握GroupBy进行分组统计。掌握多表联接查询聚合函数会员表中存储了所有会员的积分,如果想计算出会员的最高分、平均积分、积分大于300的会员个数,怎么办?会员表Customers使用聚合
2、函数聚合函数-SUM、AVG、MAX、MINSELECTSUM(Upoint)as总积分FROMCustomers1、SUMSELECTAVG(upoint)as平均积分FROMCustomers2、AVGSELECTMAX(upoint)as最高积分,MAX(upoint)as最低积分FROMCustomers3、MAX和MIN聚合函数-COUNTSELECTCOUNT(*)as人数FROMCustomersWHEREupoint>3004、COUNT(表达式)返回结果集的非空行数。SELECTMAX(Birth
3、day)as最大日期FROMCustomersMAX和MIN除了计算数值列,还可以用于计算字符型以及日期时间类型数据列其中“表达式”可以是“*”,“列名”。(1)COUNT(*):返回表中所有数据行的记录数。(2)COUNT(列名):返回指定列非空值个数。示例SELECTCOUNT(Address)as个数FROMCustomers聚合函数如果想统计居住在不同城市的人员个数,编写下面代码正确吗?SELECTCityas居住城市,Count(*)as人数FROMCustomers执行出现错误解决这样的问题需要使用GR
4、OUPBY分组统计什么是分组统计一家水果店的一天销售情况,要统计各类水果的销售额。示例SELECT水果,SUM(金额)FROM水果销售记录表GroupBy水果按水果的种类分组,然后分别汇总分组统计分组统计牢记:SELECT语句中除聚合函数外所有列,应写在GroupBy语句后面,否则将出现错误。语法SELECT<字段列表>[聚合函数]FROM表[WHERE]条件GROUPBY<字段列表>其中<字段列表>可以有多个字段,各字段用逗号隔开,它表示按哪些列进行分组。分组统计应用SELECTCityas居住城市,Count(
5、*)as人数FROMCustomersGroupByCity统计会员表中居住在不同城市的人员个数?提问分析应该按照City列进行分组分组后使用Count()聚合函数汇总行数。统计结果多列分组统计统计不同城市不同性别的会员个数?提问SELECTCityas城市,Sexas性别,Count(*)as人数FROMCustomersGroupByCity,Sex分析统计结果集应包含“城市、性别和人数3列信息”。很明显应该按照City和Sex两列进行分组。分组后仍使用Count()聚合函数汇总行数。统计结果多列分组统计如果代
6、码写成这样,结果会怎样?所以牢记:SELECT语句中除聚合函数外所有列,应写在GroupBy语句后面。SELECTCityas城市,Sexas性别,Count(*)as人数FROMCustomersGroupByCity执行错误,Sex使用HAVING子句对分组结果再次过滤继续考虑上面的查询,如果“要统计不同城市不同性别的会员个数,并且只显示会员个数大于2个的记录”如何处理呢?需要对分组后的数据进行筛选,筛选条件Count(*)>=2。对分组后的数据进行筛选需要使用Having子句。SELECTCityas居住城市
7、,Sexas性别,Count(*)as会员人数FROMCustomersGroupByCity,SexHAVINGCount(*)>=2统计结果:使用HAVING子句对分组结果再次过滤WHERE子句:从数据源中去掉不符合其搜索条件的数据GROUPBY子句:搜集数据行到各个组中,统计函数为各个组计算统计值HAVING子句:去掉不符合其组搜索条件的各组数据行WHEREGROUPBYHAVING小节如下表A。查询各学生的平均成绩,并显示学生成绩出现2次以上的信息。ClassStudentNameScoreS1161张良宝
8、80S1161刘宇100S1161张良宝60S1161刘宇60S1161严琴80S1162杨超40S1162张立华100S1162陈磊80S1162张伟60S1162杨超60S1162张立华80S1162陈磊80S1162张伟40提问SELECTStudentNameas学生姓名,AVG(Score)as平均成绩FROMAGROUPByStudentName