您所在的位置:Seago-Microsoft Windows>>计算机病毒>> 应该编写什么样的sql语句才能将下列数据筛选出来呢?

应该编写什么样的sql语句才能将下列数据筛选出来呢?

作者:管理员 来源:新浪爱问 日期:2008-04-21 

应该编写什么样的sql语句才能将下列数据筛选出来呢?
我单位oracle数据库中有一个表,内容包括每天自动采集的数据数据字段包括地点、采集数据时间单元、采集值,其中数据采集时间是按小时来间隔的,一小时可以有多次采集值。举例说明:

记录1,北京,2008-04-09 14:00:00,0/0;
记录2,北京,2008-04-09 15:00:00,3/0;
记录3,北京,2008-04-09 15:00:00,0/3;
记录4,北京,2008-04-09 15:00:00,3/2;
记录5,上海,2008-04-09 14:00:00,1/3;
记录6,上海,2008-04-09 15:00:00,3/3;
记录7,上海,2008-04-09 15:00:00,4/1;

现在想实现这个目标:即如果某一地点某一个小时内至少有两次采集值的分子大于等于3,则将该地点本小时内的全部数据挑选出来,以此类推,将全天24小时内所有站点的符合该规则的数据筛选出来。
如果仍然以上面的数据为例的话,也就是希望将记录2、3、4、6、7等5条记录挑选出来。

我不熟悉如何编写脚本,所以拜托大家帮我看看怎样才能实现上述目的?谢谢大家! 电脑问题网给出的最佳答案 select * from table1 a where (field1,field2) in (
select field1,field2 from t_yqx_1 a where to_number(substr(field3,1,instr(field3,'/')-1))>=3 group by field1,field2 having count(*)>=2
)
表名为table1,字段名为field1,field2,field3

修改一下:
我把表名字贴错了,t_yqx_1是我使用的临时表,应该换成table1
如果筛选的最小时间单位是小时,并且只提取这1个小时的数据,那么修改为:
select * from table1 where (field1,to_char(field2,'yyyymmddhh24')) in (
select field1,to_char(field2,'yyyymmddhh24')
from table1
where to_number(substr(field3,1,instr(field3,'/')-1))>=3
group by field1,to_char(field2,'yyyymmddhh24')
having count(*)>=2
)

楼主能否解释一下“2.然后将全天的数据挑出来”是什么意思?

虽然用你帮我写的语句没有实现我的目的,但是仍然万分感谢!