Sql 具有聚合函数的查询

Sql 具有聚合函数的查询,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我的DB表中有3列,如下所示。 1.开始时间 2.结束时间 3.索引号 Sample records below INDEX_NO END_TIME START_TIME ------------- ------------------------------- ------------------------------- I152 13-JAN-14 02

我的DB表中有3列,如下所示。 1.开始时间 2.结束时间 3.索引号

Sample records below

INDEX_NO                END_TIME                        START_TIME                      
------------- ------------------------------- -------------------------------
I152         13-JAN-14 02.30.00.000000000 AM 13-JAN-14 12.10.00.000000000 AM 
I151         13-JAN-14 05.30.00.000000000 AM 13-JAN-14 03.15.00.000000000 AM 
I152         20-JAN-14 02.30.00.000000000 AM 20-JAN-14 12.10.00.000000000 AM 
I151         20-JAN-14 05.30.00.000000000 AM 20-JAN-14 03.15.00.000000000 AM  
从上述结果集中,我需要提取
MIN(开始时间)
MAX(结束时间)
以及
MIN(开始时间)
记录的
索引号

有人能帮我查询一下做上述提取的最低成本吗


我使用的是oracle 11g。

首先编写内部查询,该查询查找最小时间和最大时间。然后编写一个查询,从表中选择正确的字段,将其与带有min_时间字段的内部查询连接起来

如果有多行具有相同的最小开始时间,则这将生成多行

SELECT 
    mt.INDEX_NO,
    mt.START_TIME,
    t."max_time"
FROM MyTable mt
JOIN
(
SELECT
    min(START_TIME) as "min_time",
    max(END_TIME) as "max_time"
FROM MyTable
) t
ON mt.START_TIME = t."min_time"
;
函数在这里很方便

select min(index_no) keep(dense_rank first order by start_time),
       max(end_time),
       min(start_time)
from mytab;

演示。

哇,每次看到这样的查询,我都会告诉自己需要阅读和练习聚合函数。
select min(index_no) keep(dense_rank first order by start_time),
       max(end_time),
       min(start_time)
from mytab;