Oracle:查询各组最新的一条记录

oracle中怎么查询各组中最新的一条记录呢?比如说现在有一个表中几条数据如下:

有两种写法:
写法一:over partition by 分析函数

SELECT * FROM (select ID_,COMPANY_NAME,USAGE_RATE,DETECTION_RATE,ACCEPTABILITY_RATE,CREATE_TIME,MAX(CREATE_TIME) over(partition by COMPANY_NAME)
as "atime" from SPEC_RATE_ORIGIN) x where CREATE_TIME = "atime";
1
2
写法二:inner join

SELECT A.* FROM SPEC_RATE_ORIGIN A INNER JOIN (SELECT COMPANY_NAME,MAX(CREATE_TIME) AS "atime"
FROM SPEC_RATE_ORIGIN group by COMPANY_NAME) B ON A.COMPANY_NAME = B.COMPANY_NAME AND A.CREATE_TIME = B."atime";
1
2
查询结果为:

---------------------
作者:Ryze丶
来源:CSDN
原文:https://blog.csdn.net/ShelleyLittlehero/article/details/85041768
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/niudaxianren/p/10558577.html

时间: 2024-10-02 22:45:51

Oracle:查询各组最新的一条记录的相关文章

Oracle取查询结果数据的第一条记录SQL

Oracle取查询结果数据的第一条记录SQL: select * from (select * from <table> order by <key>) where rownum=1; select * from (select * from <table> order by <key> desc) where rownum=1;

group by查询每组时间最新的一条记录

错误写法,having time = max(time)在分组之后执行,查询出来只有一条满足条件的数据.having过滤的是组,在order by之后执行 select id,userId,userFlag,lontitude,latitude,time,addr,locationdescribe from user_position group by userId having time = max(time) and userId in (select id from users where

oracle Insert 一次插入多条记录

oracle Insert 一次插入多条记录有两种方法: 1)Insert All Into table_name values ... insert all into table_name values('111','122') into table_name values('222','222') select 1 from dual; 2)Insert Into table_name select from insert into table1_name select t1.column_

SQL中显示查询结果的前几条记录

在使用数据库查询语句的过程中,我们经常需要返回查询结果的前几条或者中间几条数据,下面是我总结的几种数据库常用的方法:(table是数据库表名,table2是table表的别名) 1.SQLServer sqlserver支持top关键字,返回前若干条数据.select top 5 * from table;// 返回前5行数据 2.MySQL mysql支持limit,只能适用于mysql.limit子句用于强制select语句返回置顶的记录数,接受一个或两个数字参数,必须是整数常量.一个参数是

如何查询每个用户的第二条记录

话不多说,先上数据: 情景:平时用的最多最熟悉的就是查询第一条或者最后一条记录,这种问题很简单,不外乎升序降序排列,min()/max()函数,就可以做到了. 但是现在如果要查询第二条记录的话,sql语句该如何写呢? 今天搜到了一个解决办法,觉得sql写的不错,这里记录一下. 先声明:这不是我原创,是百度搜到的,只是略做整理,换了个我比较喜欢的数据模型. 下面是sql: SELECT m.username,m.amount,m.time FROM test m LEFT JOIN ( SELEC

SQL 查询每组的第一条记录

CREATE TABLE [dbo].[test1]( [program_id] [int] NULL, [person_id] [int] NULL ) ON [PRIMARY] /*查询每组分组中第一条记录*/ select * from test1 as a where a.person_id in ( select top 1 person_id from test1 where program_id = a.program_id); select * from ( select ROW

mysql随机查询符合条件的几条记录

随机查询,方法可以有很多种.比如,查询出所有记录,然后随机从列表中取n条记录.使用程序便可实现.可是程序实现必须查询出所有符合条件的记录(至少是所有符合条件的记录id),然后再随机取出n个id,查询数据库.但是效率毕竟没有数据库中直接查询得快.下面介绍mysql中怎样随机查询n条记录. 1.最简单的办法order by rand(),示例 select * from question q where q.`level`=1 order by rand() limit 1; 此写法,可以将查询出的

【mysql】查询最新的10条记录

实现查询最新10条数据方法: select * from 表名 order by id(主键) desc limit 10 参考文档: MySQL查询后10条数据并顺序输出 原文地址:https://www.cnblogs.com/kaerxifa/p/11746643.html

取重复记录中时间最新的一条记录Oracle sql语句

WITH t1 AS ( SELECT YLPLID,MAX(SBSJ) SBSJ FROM YLPLCG where YLPLID in(select YLPLID from CYQYCPYLPLGX where CPID='659DE0BC42544B74B660E37E665F437C') group by YLPLID )   SELECT t.YLPLMC,case when t.YLPLLX =1 then '原料' when t.YLPLLX = 2 then '配料' end Y