如果需要到数据集市进行汇总统计,需要使用GROUP BY + 聚合函数来实现。
MySQL中的聚合函数
聚合函数 | 作用 |
---|---|
COUNT() | 返回某列的行数。 |
MIN() | 返回某列的最小值。 |
MAX() | 返回某列的最大值。 |
AVG() | 返回某列的平均值。 |
SUM() | 返回某列的值的和。 |
COUNT()函数
语法如下:
select [字段1,字段2,...,]count(*|字段名|常量值) from 表名 [where子句] [GROUP BY 字段1,字段2,...];
当count(*)时,计算的是全部的数量;
当count(字段名)时,字段值中的NULL值,不计算在内;
当count(常量值)时,使用任意一个除NULL之外的常量值,计算的都是全部的数量;
示例:
查询学生的总数量:
select count(*) from school.student; select count(student_id) from school.student; select count(1) from school.student; select count('d') from school.student;
查询男同学的数量:
select count(*) from school.student where gender = '男';
查询年龄在10岁以下的男同学的数量:
select count(*) from school.student where age < 10 and gender = '男';
查询每个老师教授的学生的数量:
select teacher_id,count(*) from school.student group by teacher_id;
查询每个老师教授的不同性别的学生的数量:
select teacher_id,gender,count(*) from school.student group by teacher_id,gender;
MIN()函数
语法如下:
select [字段1,字段2,...,]min(*|字段名|常量值) from 表名 [where子句] [GROUP BY 字段1,字段2,...];
示例:
查询所有学生的最小年龄:
select min(age) from school.student;
查询男同学的最小年龄:
select min(age) from school.student where gender = '男';
查询不同性别的学生的最小年龄:
select gender,min(age) from school.student group by gender;
MAX()函数
语法如下:
select [字段1,字段2,...,]max(*|字段名|常量值) from 表名 [where子句] [GROUP BY 字段1,字段2,...];
示例:
查询所有学生的最大年龄:
select max(age) from school.student;
查询男同学的最大年龄:
select max(age) from school.student where gender = '男';
查询不同性别的学生的最大年龄:
select gender,max(age) from school.student group by gender;
AVG()函数
语法如下:
select [字段1,字段2,...,]avg(*|字段名|常量值) from 表名 [where子句] [GROUP BY 字段1,字段2,...];
示例:
查询所有学生的平均年龄:
select avg(age) from school.student;
查询男同学的平均年龄:
select avg(age) from school.student where gender = '男';
查询不同性别的学生的平均年龄:
select gender,avg(age) from school.student group by gender;
SUM()函数
语法如下:
select [字段1,字段2,...,]sum(*|字段名|常量值) from 表名 [where子句] [GROUP BY 字段1,字段2,...];
示例:
查询所有学生的总分:
select sum(age) from school.student;
查询男同学的总分:
select sum(age) from school.student where gender = '男';
查询不同性别的学生的总分:
select gender,sum(age) from school.student group by gender;
本站所有内容均为原创,本站保留所有权利。仅允许非商业用途的转载,但必须注明来源网站、作者、来源链接!否则,由此造成的一切后果,由转载方承担!
干货分享、技术提升、面试笔试、学习交流,欢迎关注公众号:xuesql。QQ学习交流群:209942678。