Oracle学习笔记010-1(分组查询)

在这里插入图片描述

分组

  • 能够分组的时候往往是指的是部分数据具备某些共性
  • 配合分组函数(聚合函数一起使用)
  • 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


边学习边记录,若有不足之处欢迎留言指点…

发布了63 篇原创文章 · 获赞 1 · 访问量 2013

猜你喜欢

转载自blog.csdn.net/qq_45061361/article/details/105042980