为了测试GROUP BY 语句,我们创建两张表,并往表中添加数据

-- 创建部门表

CREATE TABLE IF NOT EXISTS department(

id TINYINT UNSIGNED AUTO_INCREMENT KEY,

depName VARCHAR(20) NOT NULL UNIQUE

);

-- 添加部门

INSERT department(depName) VALUES('开发部');

INSERT department(depName) VALUES('视频部');

INSERT department(depName) VALUES('教学部');

INSERT department(depName) VALUES('运营部');

-- 创建员工表

CREATE TABLE IF  NOT EXISTS employee(

id Int UNSIGNED AUTO_INCREMENT KEY,

username VARCHAR(20) NOT NULL,

age TINYINT UNSIGNED DEFAULT 18,

addr VARCHAR(50) NOT NULL DEFAULT '北京',

salary FLOAT(6,2) NOT NULL DEFAULT 0,

sex ENUM('男','女','保密'),

depId TINYINT UNSIGNED

);

 

-- 添加员工记录

INSERT employee(username,age,addr,salary,sex,depId) VALUES('张三','21','山东','5432.12','男',1);

INSERT employee(username,age,addr,salary,sex,depId) VALUES('李四','32','河北','6432.00','男',2);

INSERT employee(username,age,addr,salary,sex,depId) VALUES('王五','26','北京','5932.92','女',3);

INSERT employee(username,age,addr,salary,sex,depId) VALUES('赵六','32','上海','6232.14','男',4);

INSERT employee(username,age,addr,salary,sex,depId) VALUES('Mr Adword','55','美国','9432.99','男',4);

INSERT employee(username,age,addr,salary,sex,depId) VALUES('田七','19','北京','4932.92','保密',1);

INSERT employee(username,age,addr,salary,sex,depId) VALUES('孙八','62','上海','9932.14','男',2);

INSERT employee(username,age,addr,salary,sex,depId) VALUES('Mr lili','45','美国','9132.99','女',1);

 
-- 创建省份表

CREATE TABLE IF NOT EXISTS provinces(

    -> id TINYINT UNSIGNED AUTO_INCREMENT KEY,

    -> pName VARCHAR(10) NOT NULL UNIQUE

    -> );

-- 添加省份记录

INSERT provinces(pName) VALUES('山东'),('河北'),('北京'),('上海'),('美国');

 
 
1、只使用GROUP BY语句查询结果只显示每一组的一条记录:
 
2、分组查询配合GROUP_CONCAT()来使用,可以看到每个组中的详细信息:
 
 
3、配合聚合函数来使用
  • COUNT():统计记录的数目
  • SUM():求字段的和
  • AVG():求字段的平均值
  • MAX():求字段的最大值
  • MIN():求字段的最小值
 
 
4、使用HAVING 对分组结果进行二次筛选
 
04-30 02:21