JAVA学习数据库3

来源:互联网 发布:linux重启网卡 编辑:程序博客网 时间:2024/05/29 15:10
统计 聚合函数进行统计
count 
sum
avg
max
min
-- 员工表
CREATE TABLE t_employee(
   id INT PRIMARY KEY AUTO_INCREMENT,
    employeeName VARCHAR(20),
    birthday DATE ,
    money INT,
    daprName VARCHAR(20)


);
INSERT INTO t_employee(employeeName,birthday,money,daprName)
VALUES('张三','1991-02-04',2500,'销售部'),
('李四','1992-03-04',3500,'行政部'),
('王五','1993-04-04',4500,'市场部'),
('张四','1994-05-04',5000,'行政部'),
('赵六','1995-02-08',3450,'市场部'),
('田七','1996-03-04',5700,'行政部'),
('田柳','1997-09-04',4500,'销售部'),
('萧十','1998-02-24',1400,'行政部'),
('和九','1999-04-06',2500,'销售部'),
('张飞','1991-11-04',8000,'市场部'),
('菲菲','1992-02-05',7000,'财务部');

INSERT INTO t_employee(employeeName,birthday,daprName)VALUES('刘十二','1996-05-05','市场部');


-- 聚合函数得到员工最高工资
SELECT MAX(money) FROM t_employee;


-- 得到工资最高的那个人,既使用降序排序,然后获得第一个人
SELECT * FROM t_employee ORDER BY money DESC LIMIT 1;

-- 得到员工的最低工资   min
SELECT MIN(money) FROM t_employee;

-- 得到员工的工资综合   sum
SELECT SUM(money) FROM t_employee;

-- 得到公司的平均工资  avg    ruguo
SELECT AVG(money) FROM t_employee;
-- 得到所有人的平均工资,包括实习。
SELECT SUM(money)/COUNT(*) FROM t_employee;

-- 得到公里员工人数;count(*)统计所有列,不管null  和count(money),count(非空字段),就不会计算null
SELECT COUNT(*) FROM t_employee;
SELECT COUNT(money) FROM t_employee;

-- 统计公司里面多少个部门 distinct 取出重复项
SELECT DISTINCT daprName FROM t_employee;

-- 分组   group by
SELECT FROM t_employee GROUP BY daprName;

-- 统计每个部门的总人数,包括实习生。 相同的部门名称为一个组。
-- 分组后查询列中,只能出现分组字段和聚合函数。
SELECT    daprName,COUNT(*)num FROM t_employee GROUP BY daprName;

-- 统计部门总人数在三个或以上的部门  where 后面不能直接跟聚合函数
-- 如果想对分组后的结果进行统计,那么应该用having
-- having是对分组结果做数据筛选,所以只能跟聚合函数。
SELECT daprName,COUNT(*) FROM t_employee GROUP BY daprName
HAVING COUNT(*)>3;

执行顺序  加上分组后的sql的执行顺序
  • 执行from
  • where条件过滤
  • group by 分组
  • select 执行投影列
  • having 条件过滤
  • order by  排序
having 和where的区别
二者都是过滤条件,where运行在分组钱,因此不能跟着不能执行任何聚合函数。
                              having是运行在分组后,只能用于聚合函数的过滤。
0 0
原创粉丝点击