group by
select * from TblStudent --1.请从学生表中查询出每个班的班级id和班级人数 select tsclassId as 班级id, 班级人数=count(*) from TblStudent group by tsclassId --请统计出,所有学生中男同学和女同学的人数分别是多少 select tsGender as 性别, 人数=count(*) from TblStudent group by tsGender --2.请从学生表中查询出每个班的班级id和班级中男同学的人数 select tsclassId as 班级id, 男同学人数=count(*) from TblStudent where tsGender='男' group by tsclassId
-------------------------------------------------- --当使用了分组函数group by或者是聚合函数的时候,在select的查询列表中不能再包括其他的列名,除非该列同时也出现在了group by子句中,或者该列也包含在了某个聚合函数中 select sum(tsage), 性别=tsGender, 人数=count(*) from TblStudent group by tsGender
having
----对分组以后的数据进行筛选:使用having --having和where都是对数据进行筛选,where是对分组前的每一行数据进行筛选,而having是对分组后的每一组数据进行筛选 select tsclassId as 班级id, 班级人数=count(*) from TblStudent group by tsclassId having count(*)>10
SELECT 语句的处理顺序
以下步骤显示SELECT语句的处理顺序。
1、FROM
2、ON
3、JOIN
4、WHERE
5、GROUP BY
6、with cube 或with rollup
7、HAVING
8、SELECT 8-1>选择列 8-2>distinct 8-3>top(应用top选项最后计算)
10、ORDER By
11、TOP
----------------------练习-------------------------- select * from MyOrders --1.热销售商品排名表【即按照每种商品的总销售数量排序】 select 商品名称, 销售数量=sum(销售数量) from MyOrders group by 商品名称 order by 销售数量 desc --2.请统计销售总价超过3000元的商品名称和销售总价,并按销售总价降序排序。 select 商品名称, 销售总价=sum(销售数量)*销售价格 from MyOrders group by 商品名称 having sum(销售数量)*销售价格>3000 order by 销售总价 desc --3.统计各个客户对“可口可乐”的喜爱度(既统计每个购买人对“可口可乐”的购买量) select 购买人, 可口可乐购买量=sum(销售数量) from MyOrders where 商品名称='可口可乐' group by 购买人 order by 可口可乐购买量 desc
注意:可以按照多列来排序,也可以按照多列来分组(即先按照一列来分组,再按照一组再进行分组)