sql语句orderby和groupby
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.0as'平均分'
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中多个聚合函数也⾏
groupby分组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的完整的顺序,先后顺序是固定不变的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论