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的完整的順序,先後順序是固定不變的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章