sql分组

常用sql语句

让人想犯罪 __ 提交于 2019-12-09 16:30:21
1、根据一个字段分组后,获取每组最新的一条数据 SELECT * FROM table t RIGHT JOIN (SELECT MAX(TIME) maxtime FROM table GROUP BY id) c ON t.TIME=c.maxtime 来源: CSDN 作者: 戒烟的李白 链接: https://blog.csdn.net/qq_16171815/article/details/103457919

Oracle 查询(SELECT)语句(一)

◇◆丶佛笑我妖孽 提交于 2019-12-08 15:40:46
Ø 简介 本文介绍 Oracle 中查询 (SELECT) 语句的使用,在 SQL 中 SELECT 语句是相对内容较多的,也是相对比较复杂一点的,所以这里拿出来单独学习。 首先,我们先来理一下思路,我们知道查询通常包含以下内容: Ø 查询指定的表和列 Ø 根据指定的条件查询,即 WHERE 条件 Ø 查询数据去重,即 DISTINCT 子句 Ø 查询数据聚合,即 COUNT() 、 MAX() 、 MIN() 等 Ø 按条件输出,即 CASE WHEN THEN 子句 Ø 排序 (ORDER BY) Ø 分组 (GROUP BY) 与分组过滤 (HAVING) Ø 多表连接( INNER JOIN 、 LEFT JOIN 等) Ø 子查询( SELECT 子查询、 WHERE 子查询等) Ø 其他 好了,既然知道了有这些查询功能,下面我们就一一突破,准备了以下内容: 1. 准备数据 2. SELECT 语法 3. 基本用法 4. WHERE 条件 5. 聚合查询 6. CASE WHEN THEN 子句 7. 排序 8. 分组与分组过滤 1. 准备数据 1) 创建表结构 CREATE TABLE JNUser ( UserId NUMBER ( 10 ) NOT NULL , Name VARCHAR2 ( 8 ) NOT NULL , Sex NUMBER ( 3 ) NOT

Oracle 查询(SELECT)语句(一)

让人想犯罪 __ 提交于 2019-12-08 15:39:52
Ø 简介 本文介绍 Oracle 中查询 (SELECT) 语句的使用,在 SQL 中 SELECT 语句是相对内容较多的,也是相对比较复杂一点的,所以这里拿出来单独学习。 首先,我们先来理一下思路,我们知道查询通常包含以下内容: Ø 查询指定的表和列 Ø 根据指定的条件查询,即 WHERE 条件 Ø 查询数据去重,即 DISTINCT 子句 Ø 查询数据聚合,即 COUNT() 、 MAX() 、 MIN() 等 Ø 按条件输出,即 CASE WHEN THEN 子句 Ø 排序 (ORDER BY) Ø 分组 (GROUP BY) 与分组过滤 (HAVING) Ø 多表连接( INNER JOIN 、 LEFT JOIN 等) Ø 子查询( SELECT 子查询、 WHERE 子查询等) Ø 其他 好了,既然知道了有这些查询功能,下面我们就一一突破,准备了以下内容: 1. 准备数据 2. SELECT 语法 3. 基本用法 4. WHERE 条件 5. 聚合查询 6. CASE WHEN THEN 子句 7. 排序 8. 分组与分组过滤 1. 准备数据 1) 创建表结构 CREATE TABLE JNUser ( UserId NUMBER ( 10 ) NOT NULL , Name VARCHAR2 ( 8 ) NOT NULL , Sex NUMBER ( 3 ) NOT

Oracle 查询(SELECT)语句(一)

安稳与你 提交于 2019-12-08 15:39:43
Ø 简介 本文介绍 Oracle 中查询 (SELECT) 语句的使用,在 SQL 中 SELECT 语句是相对内容较多的,也是相对比较复杂一点的,所以这里拿出来单独学习。 首先,我们先来理一下思路,我们知道查询通常包含以下内容: Ø 查询指定的表和列 Ø 根据指定的条件查询,即 WHERE 条件 Ø 查询数据去重,即 DISTINCT 子句 Ø 查询数据聚合,即 COUNT() 、 MAX() 、 MIN() 等 Ø 按条件输出,即 CASE WHEN THEN 子句 Ø 排序 (ORDER BY) Ø 分组 (GROUP BY) 与分组过滤 (HAVING) Ø 多表连接( INNER JOIN 、 LEFT JOIN 等) Ø 子查询( SELECT 子查询、 WHERE 子查询等) Ø 其他 好了,既然知道了有这些查询功能,下面我们就一一突破,准备了以下内容: 1. 准备数据 2. SELECT 语法 3. 基本用法 4. WHERE 条件 5. 聚合查询 6. CASE WHEN THEN 子句 7. 排序 8. 分组与分组过滤 1. 准备数据 1) 创建表结构 CREATE TABLE JNUser ( UserId NUMBER ( 10 ) NOT NULL , Name VARCHAR2 ( 8 ) NOT NULL , Sex NUMBER ( 3 ) NOT

Oracle 查询(SELECT)语句(一)

安稳与你 提交于 2019-12-08 15:38:21
Ø 简介 本文介绍 Oracle 中查询 (SELECT) 语句的使用,在 SQL 中 SELECT 语句是相对内容较多的,也是相对比较复杂一点的,所以这里拿出来单独学习。 首先,我们先来理一下思路,我们知道查询通常包含以下内容: Ø 查询指定的表和列 Ø 根据指定的条件查询,即 WHERE 条件 Ø 查询数据去重,即 DISTINCT 子句 Ø 查询数据聚合,即 COUNT() 、 MAX() 、 MIN() 等 Ø 按条件输出,即 CASE WHEN THEN 子句 Ø 排序 (ORDER BY) Ø 分组 (GROUP BY) 与分组过滤 (HAVING) Ø 多表连接( INNER JOIN 、 LEFT JOIN 等) Ø 子查询( SELECT 子查询、 WHERE 子查询等) Ø 其他 好了,既然知道了有这些查询功能,下面我们就一一突破,准备了以下内容: 1. 准备数据 2. SELECT 语法 3. 基本用法 4. WHERE 条件 5. 聚合查询 6. CASE WHEN THEN 子句 7. 排序 8. 分组与分组过滤 1. 准备数据 1) 创建表结构 CREATE TABLE JNUser ( UserId NUMBER ( 10 ) NOT NULL , Name VARCHAR2 ( 8 ) NOT NULL , Sex NUMBER ( 3 ) NOT

Oracle 查询(SELECT)语句(一)

孤人 提交于 2019-12-08 15:37:37
Ø 简介 本文介绍 Oracle 中查询 (SELECT) 语句的使用,在 SQL 中 SELECT 语句是相对内容较多的,也是相对比较复杂一点的,所以这里拿出来单独学习。 首先,我们先来理一下思路,我们知道查询通常包含以下内容: Ø 查询指定的表和列 Ø 根据指定的条件查询,即 WHERE 条件 Ø 查询数据去重,即 DISTINCT 子句 Ø 查询数据聚合,即 COUNT() 、 MAX() 、 MIN() 等 Ø 按条件输出,即 CASE WHEN THEN 子句 Ø 排序 (ORDER BY) Ø 分组 (GROUP BY) 与分组过滤 (HAVING) Ø 多表连接( INNER JOIN 、 LEFT JOIN 等) Ø 子查询( SELECT 子查询、 WHERE 子查询等) Ø 其他 好了,既然知道了有这些查询功能,下面我们就一一突破,准备了以下内容: 1. 准备数据 2. SELECT 语法 3. 基本用法 4. WHERE 条件 5. 聚合查询 6. CASE WHEN THEN 子句 7. 排序 8. 分组与分组过滤 1. 准备数据 1) 创建表结构 CREATE TABLE JNUser ( UserId NUMBER ( 10 ) NOT NULL , Name VARCHAR2 ( 8 ) NOT NULL , Sex NUMBER ( 3 ) NOT

Oracle 查询(SELECT)语句(一)

☆樱花仙子☆ 提交于 2019-12-08 15:34:28
Ø 简介 本文介绍 Oracle 中查询 (SELECT) 语句的使用,在 SQL 中 SELECT 语句是相对内容较多的,也是相对比较复杂一点的,所以这里拿出来单独学习。 首先,我们先来理一下思路,我们知道查询通常包含以下内容: Ø 查询指定的表和列 Ø 根据指定的条件查询,即 WHERE 条件 Ø 查询数据去重,即 DISTINCT 子句 Ø 查询数据聚合,即 COUNT() 、 MAX() 、 MIN() 等 Ø 按条件输出,即 CASE WHEN THEN 子句 Ø 排序 (ORDER BY) Ø 分组 (GROUP BY) 与分组过滤 (HAVING) Ø 多表连接( INNER JOIN 、 LEFT JOIN 等) Ø 子查询( SELECT 子查询、 WHERE 子查询等) Ø 其他 好了,既然知道了有这些查询功能,下面我们就一一突破,准备了以下内容: 1. 准备数据 2. SELECT 语法 3. 基本用法 4. WHERE 条件 5. 聚合查询 6. CASE WHEN THEN 子句 7. 排序 8. 分组与分组过滤 1. 准备数据 1) 创建表结构 CREATE TABLE JNUser ( UserId NUMBER ( 10 ) NOT NULL , Name VARCHAR2 ( 8 ) NOT NULL , Sex NUMBER ( 3 ) NOT

Oracle 查询(SELECT)语句(一)

时光怂恿深爱的人放手 提交于 2019-12-08 15:33:42
Ø 简介 本文介绍 Oracle 中查询 (SELECT) 语句的使用,在 SQL 中 SELECT 语句是相对内容较多的,也是相对比较复杂一点的,所以这里拿出来单独学习。 首先,我们先来理一下思路,我们知道查询通常包含以下内容: Ø 查询指定的表和列 Ø 根据指定的条件查询,即 WHERE 条件 Ø 查询数据去重,即 DISTINCT 子句 Ø 查询数据聚合,即 COUNT() 、 MAX() 、 MIN() 等 Ø 按条件输出,即 CASE WHEN THEN 子句 Ø 排序 (ORDER BY) Ø 分组 (GROUP BY) 与分组过滤 (HAVING) Ø 多表连接( INNER JOIN 、 LEFT JOIN 等) Ø 子查询( SELECT 子查询、 WHERE 子查询等) Ø 其他 好了,既然知道了有这些查询功能,下面我们就一一突破,准备了以下内容: 1. 准备数据 2. SELECT 语法 3. 基本用法 4. WHERE 条件 5. 聚合查询 6. CASE WHEN THEN 子句 7. 排序 8. 分组与分组过滤 1. 准备数据 1) 创建表结构 CREATE TABLE JNUser ( UserId NUMBER ( 10 ) NOT NULL , Name VARCHAR2 ( 8 ) NOT NULL , Sex NUMBER ( 3 ) NOT

sql中筛选第一条记录【分组排序】

末鹿安然 提交于 2019-12-08 14:49:25
问题描述 我们现在有一张表titles,共有4个字段,分别是emp_no(员工编号),title(职位),from_date(起始时间),to_date(结束时间),记录的是员工在某个时间段内职位名称,因为会存在升职,转岗之类的,里面emp_no可能会对应多个职位,我们现在要取到所有员工最近的职位信息,包括离职员工。 本文介绍两种方法去实现结果: 方法一 嵌套一个group by+max()子查询获取最近的职位信息。 思路 通过对emp_no分组取每个emp_no对应的最大的from_date; SELECT emp_no, max( from_date ) AS max_date FROM titles GROUP BY emp_no 结果如下: 通过查询出来的最大的from_date取筛选最近的的一条职位信息。 SELECT t.emp_no, t.title FROM titles t LEFT JOIN ( SELECT emp_no, max( from_date ) AS max_date FROM titles GROUP BY emp_no ) et ON t.emp_no = et.emp_no AND t.from_date = et.max_date 结果如下: 方法二 通过rank over partition by函数实现,这个目前是Oracle独有的函数

SQL where and having

拈花ヽ惹草 提交于 2019-12-07 02:29:07
HAVING 支持所有WHERE操作符,他们语法是相同的,只是关键字差别,HAVING支持所有WHERE的条件,唯一的差别是WHERE过滤行,而HAVING过滤分组。另一种理解方法,WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤。这是一个重要区别,WHERE排除的行不包括在分组中。这可能会改变计算值,从而影响HAVING子句中基于这些值过滤掉的分组。 SELECT vend_id, COUNT(*) AS num_prods FROM products WHERE prod_price>=10 GROUP BY vend_id HAVING COUNT(*) >= 2 WHERE子句过滤所有prod_price至少为10的行。然后按vend_id分组数据,HAVING子句过滤计数为2或2以上的分组 来源: oschina 链接: https://my.oschina.net/u/1163184/blog/3110766