2 u010463375 u010463375 于 2013.07.02 12:57 提问

求帮助,oracle数据库,查询出每个最新时间的那一条数据

select p.* from (select rownum as 序号 ,n.* from (select sitename as 站点名称, RecordTime as 记录时间 ,decode(avg(case item when 211 then value else null end),0,'0.00000',trim(to_char(avg(case item when 211 then value else null end),'99999999999990.99999'))) "SO2(mg/m3)" from(select s.sitename,m.* from air_temphourdata m left join site s on m.sitecode=s.sitecode where m.SiteCode in ('34656-31102001','34656-31102006'))group by sitename,Recordtime having to_char(Recordtime,'yyyymmddhhmmss')=MAX(to_char(Recordtime,'yyyymmddhhmmss')) order by RecordTime desc ) n )p where p.序号 between 1 and 15 只查询出每个站点最大时间的那一条

1个回答

u010412440
u010412440   2018.03.16 15:28

很简单的问题,使用窗口函数解决~
select 站点名称,first_value("SO2(mg/m3)") over(partition by 站点名称 order by 记录时间 desc)
from (
select sitename as 站点名称,
RecordTime as 记录时间,
decode(avg(case item
when 211 then
value
else
null
end),
0,
'0.00000',
trim(to_char(avg(case item
when 211 then
value
else
null
end),
'99999999999990.99999'))) "SO2(mg/m3)"
from (select s.sitename, m.*
from air_temphourdata m
left join site s
on m.sitecode = s.sitecode
where m.SiteCode in ('34656-31102001', '34656-31102006'))) n

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Oracle数据库的SQL查询语句查询每个用户最近一次的登录记录并且只显示一条
有如下数据库及数据:create table oness( oids number(4) primary key, Names varchar2(10) not null, Email varchar2(20), LastLogin date );添加的数据如下: 查询出test4、test1、test2用户最近的登录记录有两种方式:
oracle 在一张日志表中,同一个ID 有多条记录,每个ID只获取最新时间的记录
select c.object_id, c.total_time,c.total_count   from (select t.*,  row_number() over(partition by t.object_id order by t.total_time desc) rn  from t_dcmt_dbobj_log t) c  where rn = 1
数据库的一个表里筛选出每一人的时间最新的一条记录
-- 方法1 select a.*  from table1 a  where not exists(select 1                   from table1 b                   where b.name=a.name and b.gdtime>a.gdtime) -- 方法2 select a.*  from table1 a
每个分类取最新的几条的SQL实现
分类统计时候,我们可能经常会碰到这样的需求,每个分类按照一定顺序,取几条数据,然后在一起显示。 这个问题的解决方法,我们通过搜索引擎,可以找到很多中。但是不是SQL语句过于复杂,就是在数据量比较大时候,性能特别成问题。 今天我就碰到这样一个需求。而我自己的解决方案就是SQL过于复杂,或者性能比较差的。为此我在CSDN论坛发了个帖子,看有没有更好的解决方案。 http://topic.csdn.n
oracle查询分组数据中的最后一条数据和每组的数量
实现代码:select tmp.*,(select count(*) from tb_user where id = tmp.id) quantity from( select row_num() over(partition by user.id order by a.name) rn, user.id id, user.name name, user.passwo
oracle取时间最大的一条数据
oracle取时间最大的一条数据的两种方法 建议使用第一种 数据量大的可以加上索引以提高效率1.select * from (select t.regtime, t.nechen,t.id from memberinfo t order by regtime desc) where rownum=1 2.select t.regtime,t.nechen,t.id from memberinf
SQL消费表中查找所有用户最后一条消费记录
SQL消费表中查找所有用户最后一条消费记录 5 SQL消费表中查找所有用户最后一条消费记录 BussnissLogs表中字段BussnissLogsID(消费流水ID),UserID(用户ID),HappeningTime(消费时间) 这个SQL应该怎么写呢? select a.* from BussnissLogs a,(select userid,max(
mysql5.7分组查询group by,分组查询并且显示每组时间最新的一条记录
SELECT ** FROM t_group_album a LEFT JOIN ( SELECT f_aid, COUNT(f_aid) pictureNum, group_concat( f_image_url ORDER BY f_update_time DESC ) f_image_url FROM t_group_picture GROUP BY f_ai
取时间最大的一条记录
A表 id          title a1            a1 b表 id          Aid      name      time b1         a1         u             2017-5-6 b2         a1         x              2017-7-8 b3         a1         z
sql分组按时间查询最近的一条
select t.* from (select * ,row_number() over (partition by FID order by SW_MEASURE_TME desc) as rn from SWLSDTJC) t where rn DATEADD(HOUR,-2,GETDATE()) 分组查询最近两个小时内最近的一条记录