SQL-常用的5个聚合函数
平时最经常用到的聚合函数是这5个:
- SUM():返回表达式中所有值的和或仅非重复值的和,SUM 只能用于数字列, Null 值会被忽略。
--返回表达式中所有值的和 SUM (all column_name) --all是默认值,一般省略不写 --返回表达式中仅非重复值的和 SUM (distinct column_name) --distinct去重column_name
- MIN():返回表达式中最小的值,可用于 numeric、char、varchar、uniqueidentifier 或 datetime 列,Null 值会被忽略。
MIN(column_name)
- MAX():返回表达式中最大的值,可用于 numeric、char、varchar、uniqueidentifier 或 datetime 列,Null 值会被忽略。
MAX(column_name)
- COUNT():返回组中找到的项数量,返回int类型数据。
--返回查询数据中行计数 COUNT(*) --返回column_name计数,Null 值会被忽略。 COUNT(all column_name) --all是默认值,一般省略不写 --返回非重复column_name计数,Null 值会被忽略。 COUNT(distinct column_name)
- AVG():返回组中各值的平均值,将忽略 null 值。
--向所有值应用此聚合函数 AVG(all column_name)--all是默认值,一般省略不写 --去重column_name后,返回求平均值 AVG(distinct column_name)
SUM()示例:
1.查询成绩表stud_grade中所有学生的总成绩(grade):
select sum(grade) grade from [student].[dbo].[stud_grade]
2.分别查询成绩表stud_grade中课程为‘计算机导论’和‘IT市场营销’的总成绩(grade):
select B.course_name, sum( grade) grade from [student].[dbo].[stud_grade] A inner join [dbo].[lesson_info] B on A.course_id=B.course_id where B.course_name in(计算机导论,IT市场营销) group by B.course_name
3.查询成绩表stud_grade中成绩(grade)去重后的总成绩(grade):
select sum( distinct grade) grade from [student].[dbo].[stud_grade]
MIN()示例:
1.查询成绩表stud_grade中最低成绩(grade):
select min(grade) grade from [student].[dbo].[stud_grade]
2.查询成绩表stud_grade中课程为‘多媒体技术’的最低成绩(grade):
select B.course_name, min( grade) grade from [student].[dbo].[stud_grade] A inner join [dbo].[lesson_info] B on A.course_id=B.course_id where B.course_name=多媒体技术 group by B.course_name
MAX()示例:
1.查询成绩表stud_grade中最高成绩(grade):
select max(grade) grade from [student].[dbo].[stud_grade]
2.查询成绩表stud_grade中课程为‘多媒体技术’的最高成绩(grade):
select B.course_name, max( grade) grade from [student].[dbo].[stud_grade] A inner join [dbo].[lesson_info] B on A.course_id=B.course_id where B.course_name=多媒体技术 group by B.course_name
COUNT()示例:
1.查询成绩表stud_grade中有多少条数据:
select count(*) count_grade from [student].[dbo].[stud_grade]
2.查询成绩表stud_grade中有多少学生(stud_id):
select count(distinct stud_id) count_stud from [student].[dbo].[stud_grade]
AVG()示例:
1.查询成绩表stud_grade中所有学生的平均成绩(grade):
select AVG(grade) avg_grade from [student].[dbo].[stud_grade]
2.分别查询成绩表stud_grade中课程为‘计算机导论’和‘IT市场营销’所有学生的平均成绩(grade):
select B.course_name, avg(grade) avg_grade from [student].[dbo].[stud_grade] A inner join [dbo].[lesson_info] B on A.course_id=B.course_id where B.course_name in(计算机导论,IT市场营销) group by B.course_name