Sql 具有聚合函数的查询
我的DB表中有3列,如下所示。 1.开始时间 2.结束时间 3.索引号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
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;