分组查询取最大时间记录的多种方式
sql语句:
[sql]
create table dispatch_result (
dr_id number not null,
sheet_id number,
check_next varchar(20),
check_time date,
check_sn char(8),
check_comment varchar(255),
check_status number,
constraint PK_RESULT primary key (dr_id)
);
表记录:
DR_ID SHEET_ID CHECK_NEXT CHECK_TIME CHECK_SN CHECK_COMMENT CHECK_STATUS
---------- ---------- -------------------- ----------- -------- -------------------------------------------------------------------------------- ------------
1 1 10001 2012/8/12 11:11:23 10000 1
2 1 10002 2012/9/15 11:15:24 10001 2
3 2 10001 2012/8/15 9:16:10 10000 1
4 2 10002 2012/9/18 11:16:23 10001 2
查询以SHEET_ID 分组取最大时间记录:
第一种子查询方式:
[sql]
select * from dispatch_result dr where dr.check_time=(
select max(check_time) from dispatch_result where sheet_id=dr.sheet_id)
DR_ID SHEET_ID CHECK_NEXT CHECK_TIME CHECK_SN CHECK_COMMENT CHECK_STATUS
---------- ---------- -------------------- ----------- -------- -------------------------------------------------------------------------------- ------------
2 1 10002 2012/9/15 11:15:24 10001 2
4 2 10002 2012/9/18 11:16:23 10001 2
第二种group by方式:
[sql]
select t1.* from dispatch_result t1 right join
(select sheet_id,max(check_time) ct from dispatch_result group by sheet_id) t2
on t2.sheet_id=t1.sheet_id and t2.ct=t1.check_time
DR_ID SHEET_ID CHECK_NEXT CHECK_TIME CHECK_SN CHECK_COMMENT CHECK_STATUS
---------- ---------- -------------------- ----------- -------- -------------------------------------------------------------------------------- ------------
2 1 10002 2012/9/15 11:15:24 10001 2
4 2 10002 2012/9/18 11:16:23 10001 2
或
[sql]
select * from dispatch_result
inner join (select max(dr.check_time) as check_time, dr.sheet_id from dispatch_result dr group by dr.sheet_id) t1
using(check_time,sheet_id);
CHECK_TIME SHEET_ID DR_ID CHECK_NEXT CHECK_SN CHECK_COMMENT CHECK_STATUS
----------- ---------- ---------- -------------------- -------- -------------------------------------------------------------------------------- ------------
2012/9/15 11:15:24 1 2 10002 10001 2
2012/9/18 11:16:23 2 4 10002 10001 2
第三种partition by方式:
[sql]
select t2.* from
(select t1.*,row_number() over
(partition by t1.sheet_id order by t1.check_time desc nulls last) rn from dispatch_result t1) t2
where rn=1
DR_ID SHEET_ID CHECK_NEXT CHECK_TIME CHECK_SN CHECK_COMMENT CHECK_STATUS
---------- ---------- -------------------- ----------- -------- -------------------------------------------------------------------------------- ------------
2 1 10002 2012/9/15 11:15:24 10001 2
4 2 10002 2012/9/18 11:16:23 10001 2
分享到:
相关推荐
希尔排序的时间复杂度介于O(n)和O(n^2)之间,具体取决于所选的间隔序列。虽然希尔排序的效率比原始插入排序高,但它不是稳定的排序算法。 这些排序算法各有优缺点,适用于不同的场景。例如,对于小规模数据或部分...
10. **汇总数据**:使用聚集函数如`SUM`求和,`AVG`求平均,`COUNT`计数,`MAX`取最大值,`MIN`取最小值,可以对一组数据进行统计分析。 11. **分组数据**:`GROUP BY`用于按指定字段进行分组,`HAVING`过滤分组后...
- 数据子集:只取必要的数据,避免查询全表。 - 缓存数据:利用水晶报表的缓存功能,提高数据检索速度。 10. 部署与发布: 设计完成后,报表可以通过水晶报表服务器或Web应用程序部署,供终端用户访问。水晶报表...
3. **日期和时间函数**:处理日期和时间数据,如`DATE()`提取日期部分,`TIME()`提取时间部分,`NOW()`获取当前日期和时间,`DATE_ADD()`和`DATE_SUB()`添加或减去时间间隔。 4. **数学函数**:进行数学运算,如`...
oracle 甲骨文 获得最高认证级别的ISO标准安全认证,性能最高, 保持开放平台下的TPC-D和TPC-C的世界记录。但价格不菲 大型企业 db2 IBM DB2在企业级的应用最为广泛, 在全球的500家最大的企业中,几乎85%以上用DB2...
若打算使总的时延为最小,问分组的数据部分长度p应取为多大? 为了使总的时延最小,我们需要找到分组的数据部分长度\(p\)的最优值。总时延\(D\)可以表示为: \[D = kd + \left(\frac{x}{p}\right)\left(\frac{p+h}...
- **SQL总览**:SQL支持多种功能,包括数据查询(如SELECT)、数据定义(如CREATE TABLE)、数据操作(如INSERT、UPDATE、DELETE)和数据控制(如GRANT、REVOKE)等。 #### 二、查询——SELECT语句的使用 - **目标...
22. SQL聚合查询:GROUP BY语句结合MAX函数,按部门号分组并计算最大值,结果记录数取决于部门数量。 23. 窗体事件:退出系统的过程涉及到一系列事件,包括关闭、确认等。 24. 窗体打开事件顺序:打开 → 加载 → ...
##### 取表的前N条记录 在Oracle中,可以使用`ROWNUM`伪列来限制查询结果的行数。例如: ```sql SELECT * FROM table_name WHERE ROWNUM ; ``` ##### Decode & Case `DECODE`函数和`CASE`表达式都可以用来根据...
希尔排序的时间复杂度介于O(n)和O(n^2)之间,具体取决于增量序列的选择。 在`Sort.cpp`文件中,可能包含了这些排序算法的C语言实现。而`dataList.h`可能是一个头文件,定义了数据结构和函数原型,以便在排序过程中...
- **你的第一个查询**:例如,查询某个表中的所有记录:`SELECT * FROM table_name`。 - **总结**:SELECT语句是SQL中最常用的命令之一,用于从数据库中检索数据。通过灵活使用不同的子句(如WHERE、ORDER BY等),...
- **你的第一个查询**:通过简单的例子介绍如何编写基本的SELECT语句,例如从特定表中选择所有记录或特定列的记录。 - **总结**:强调SELECT语句的基础性和重要性,以及其在日常数据库管理工作中的应用。 #### 第三...
- **时间复杂度**: 平均情况介于O(n)到O(n^2)之间,具体取决于增量序列的选择。 - **应用场景**: 适用于数据量较大的场景,特别是当数据分布均匀时效果较好。 5. **快速排序(Quick Sort)** - **原理**: 快速...
希尔排序的时间复杂度取决于选取的间隔序列,通常比简单的O(n^2)要好。 4. **堆排序**(Heap Sort):利用完全二叉树的特性构建堆,然后交换堆顶元素与末尾元素,调整剩余元素重新成堆,如此反复。堆排序的平均和最...
数据缺失是数据分析中常见的挑战,它可能导致分析结果的偏差,降低模型的准确性和可靠性。处理数据缺失问题至关重要,...同时,对数据集进行预处理时,应记录下处理过程,以便后续分析者了解数据的原始状态和处理方式。
在计算机二级等级考试中,考生需要掌握多种知识点,包括但不限于Excel操作、数据库概念、数据类型、存储结构、链表操作、宏命令、编程基础、文件扩展名、属性值、数据类型限制、存储过程的使用以及SQL查询等。...
- **默认值**:`TIMESTAMP`可以自动记录当前日期时间。 - **存储空间**:`TIMESTAMP`占用的空间较小。 以上就是根据《MySQL数据库开发》期末复习题文档中提取的关键知识点的详细介绍。通过这些知识点的学习,可以...
- **日期/时间函数**:如`ADD_MONTHS`、`LAST_DAY`、`MONTHS_BETWEEN`等,用于处理日期和时间数据。 - **数学函数**:如`ABS`(取绝对值)、`CEIL`和`FLOOR`(向上/向下取整)、`COS`、`SIN`、`TAN`(三角函数)、`...