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