聚合函数

本文介绍了如何使用SQL创建数据库及表、插入数据,并通过具体示例展示了如何进行基本的数据统计查询,包括计数、求和、平均值、最大值和最小值等。此外还涉及了分组查询和条件筛选等高级用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



- 创建数据库
CREATE DATABASE my4;
-- 引用数据库
USE my3;
DROP DATABASE m4;
-- 删除数据库
DROP DATABASE my4;


-- 删除表
DROP TABLE t_student;


CREATE TABLE t_student(
id INT PRIMARY KEY AUTO_INCREMENT,
studentName VARCHAR(20),
grade INT
)CHARSET=utf8;


INSERT INTO t_student(studentName,grade) VALUES('张三',90),('李四',83),('王五',40),('赵六',50);
INSERT INTO t_student(studentName) VALUES ('田七');
SELECT*FROM t_student;


-- 统计学生总数 count(*)表示统计所有记录,count(列名)只统计非空列
SELECT COUNT(*) FROM t_student;
SELECT COUNT(grade) FROM t_student;




-- 统计总分
SELECT SUM(grade) FROM t_student;




-- 统计平均分
SELECT AVG(grade) FROM t_student;


-- 显示该班最高分、最低分
SELECT MAX(grade),MIN(grade) FROM t_student;


-- 显示最高分是谁
-- 在where 条件中不能使用聚合函数
SELECT*FROM t_student ORDER BY grade DESC LIMIT 0,1;






--  -----------------------------------------------------

CREATE TABLE t_employee(
id INT PRIMARY KEY AUTO_INCREMENT,
employeeName VARCHAR(20),
money INT,
deptName VARCHAR(20)
)CHARSET=utf8;


INSERT INTO t_employee(employeeName,money,deptName) VALUES('张三',3000,'销售部');
INSERT INTO t_employee(employeeName,money,deptName) VALUES('李四',8000,'行政部');
INSERT INTO t_employee(employeeName,money,deptName) VALUES('张翠山',6000,'销售部');
INSERT INTO t_employee(employeeName,money,deptName) VALUES('李源',4000,'市场部');
INSERT INTO t_employee(employeeName,money,deptName) VALUES('李世民',5000,'财务部');
INSERT INTO t_employee(employeeName,money,deptName) VALUES('张合',3500,'企划部');
INSERT INTO t_employee(employeeName,money,deptName) VALUES('王语嫣',3500,'销售部');
INSERT INTO t_employee(employeeName,money,deptName) VALUES('刘文彩',2300,'行政部');
INSERT INTO t_employee(employeeName,money,deptName) VALUES('万华',4000,'财务部');
INSERT INTO t_employee(employeeName,money,deptName) VALUES('周董',3000,'企划部');


SELECT*FROM t_employee;
DROP TABLE t_employee;


-- 统计每个部门有多少人
SELECT deptName,COUNT(*) num FROM t_employee GROUP BY deptName;
-- 在分组查询中,查询字段只能是聚合函数和分组函数
-- 统计各部门最高工资
SELECT deptName, MAX(money) FROM t_employee  GROUP BY deptName;
-- 统计各部门工资在5000以下的人数
 SELECT deptName,COUNT(money) FROM t_employee WHERE money<5000 GROUP BY deptName;
 -- 统计各部门的平均工资
 SELECT e.deptName,AVG(money) FROM t_employee e GROUP BY e.deptName;
 
 
 -- 统计平均工资在3000以上的部门
 -- having 是对分组的结果再进行过滤,所有having条件中可以加入聚合函数
 SELECT deptName,AVG(money) FROM t_employee e GROUP BY deptName HAVING AVG(money)>3000;
 
 -- 统计每个部门中工资在3000以上的部门人数
 SELECT  deptName,COUNT(money) FROM t_employee WHERE money>3000 GROUP BY deptName;
 SELECT deptName,COUNT(money) FROM t_employee e WHERE e.money>3000 GROUP BY deptName;
 
 -- 查询部门人数至少是2个的部门
 SELECT deptName,COUNT(*) FROM t_employee e GROUP BY deptName HAVING COUNT(*)>=2;
 
 -- 按部门平均工资降序显示部门
 SELECT deptName,AVG(money) FROM t_employee GROUP BY deptName ORDER BY AVG(money) DESC;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值