分组
- 能够分组的时候往往是指的是部分数据具备某些共性
- 配合分组函数(聚合函数一起使用)
- GROUP BY 要分组的列名 对数据集合处理的函数,可以处理多行数据
- SELECT [DISTINCT] 分组字段 ,分组字段 ,…FROM 表名称 [WHERE 过滤条件] [GROUP BY 分组字段,分组字段…] ;
- 先FROM,再WHERE,再GRUOP BY,再SELECT,ORDER BY放在最后位置
案例
案例建表语句
CREATE TABLE pleatuser(
id VARCHAR2(4),
name VARCHAR2(24) NOT NULL,
age NUMBER,
sex VARCHAR2(4) NOT NULL,
city VARCHAR2(64),
CONSTRAINT pk_pleatuser_id PRIMARY KEY(id)
);
INSERT INTO pleatuser VALUES ('001','小华','41','男','北京');
INSERT INTO pleatuser VALUES ('002','小李','19','男','上海');
INSERT INTO pleatuser VALUES ('003','小伟','32','男','上海');
INSERT INTO pleatuser VALUES ('004','小敏','45','男','浙江');
INSERT INTO pleatuser VALUES ('005','小王','18','男','浙江');
INSERT INTO pleatuser VALUES ('006','小吴','25','男','北京');
INSERT INTO pleatuser VALUES ('007','小明','34','女','北京');
INSERT INTO pleatuser VALUES ('008','小丽','20','女','上海');
SELECT * FROM PLEATUSER;
案例查询:简单分组
- 只按照表中的某一个特性进行分组是称之为单列分组(简单分组)
-- 错误用法
SQL> SELECT * FROM PLEATUSER GROUP BY CITY;
SELECT * FROM PLEATUSER GROUP BY CITY
*
第 1 行出现错误:
ORA-00979: 不是 GROUP BY 表达式
-- 正常
SQL> SELECT NAME,COUNT(CITY) FROM PLEATUSER GROUP BY NAME;
--单个分组条件
SQL> SELECT NAME FROM PLEATUSER GROUP BY NAME;
NAME
------------------------------------------------
小王
小明
小华
小伟
小敏
小吴
小丽
小李
已选择8行
-- 按性别进行分组
SQL> SELECT SEX,COUNT(SEX) FROM PLEATUSER GROUP BY SEX;
SEX COUNT(SEX)
-------- ----------
男 6
女 2
-- 聚合函数配合分组查询使用(统计每一个城市的人数)
SQL> SELECT CITY,COUNT(CITY) FROM PLEATUSER GROUP BY CITY;
CITY
--------------------------------------------------------------------------------
COUNT(CITY)
-----------
上海
3
北京
3
浙江
2
--
案例查询:复杂分组
- 按照表中的多个特性进行分组时称为多列分组(复杂分组)
-- 基本语法
SELECT 特性1,特性2.............. FROM TABLENAME GROUP BY 特性1,特性2..................;
-- 基本用法和简单分组差别不大
-- 查询表中所有信息
SQL> SELECT * FROM PLEATUSER;
ID NAME AGE SEX CITY
-----------------------------------
001 小华 41 男 北京
002 小李 19 男 上海
003 小伟 32 男 上海
004 小敏 45 男 浙江
005 小王 18 男 浙江
006 小吴 25 男 北京
007 小明 34 女 北京
008 小丽 20 女 上海
-- 按照多个特性进行分组
SQL> SELECT AGE,CITY,COUNT(CITY) FROM PLEATUSER GROUP BY CITY,AGE;
AGE CITY COUNT(CITY)
---------------------------
32 上海 1
25 北京 1
34 北京 1
20 上海 1
41 北京 1
18 浙江 1
45 浙江 1
19 上海 1
边学习边记录,若有不足之处欢迎留言指点…