sql语句 order by 和 group by

sql 语句 中的order by 和 group by

以下Tbstudent为表名
语法 order by 字段名 asc(升序)/desc(降序)

--order by 排序, 一个select中只能有一个order by 如果不写asc 默认是asc
select stuName,stuNumber,stuMath from Tbstudent order by stuMath asc
select stuName,stuNumber,stuMath,stuEnglish from Tbstudent
order by stuMath asc, stuEnglish asc
--聚合函数不允许有多个字段
-- 根据平均分查询  --order by 后面可以使用别名 但是where后不行
select stuName,stuNumber ,ISNULL(CAST(stuMath as varchar(4)),'缺考') as stuMath,stuEnglish,
(stuMath + stuEnglish)/2.0 as '平均分'
from Tbstudent
where (stuMath + stuEnglish)/2.0 > 60
order by 平均分

提示:order by一定要写在最后一条

--group by 分组查询 分组后可统计 COUNT 分组后聚合函数只在分好的组中计算
select stuGender,COUNT(1) as 性别人数 from Tbstudent group by stuGender
--根据地方分组  分组查询原则:在select出现 聚合语句中只能有一个字段  除非都在group中 多个聚合函数也行
select stuAddress ,COUNT(1) as 地方人数 from Tbstudent group by stuAddress
order by 地方人数 desc
select stuClassId ,AVG((stuMath+stuEnglish)/2) from Tbstudent
where stuGender = 1 
group by stuClassId
--where 只能筛选原始表中的  where AVG((stuMath+stuEnglish)/2) 这样是不行的
-- 要想使用的 话必须使用having 子句 having只能和group by 一起使用 having是对分组的节选 having的条件必须是参与分组的
select stuClassId ,AVG((stuMath+stuEnglish)/2) from Tbstudent
where stuGender = 1 
group by stuClassId
having AVG((stuMath+stuEnglish)/2) >70
--select 完整语序
-- select 字段
-- from 表名
-- where 条件
-- group by 列
-- having 分组后的筛选条件
--order by 列

这是一个select的完整的顺序,先后顺序是固定不变的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值