Dan*_* A. 15
"平均日期"的定义是主观的,但您可以将日期转换为朱利安数字,然后将其平均,将其四舍五入,然后转换回日期.
create table dates (dt DATE);
insert into dates
values ('24-APR-2012');
insert into dates
values ('01-JAN-2012');
insert into dates
values ('01-JAN-2013');
insert into dates
values ('25-DEC-1900');
select to_date(round(avg(to_number(to_char(dt, 'J')))),'J')
from dates;
Run Code Online (Sandbox Code Playgroud)
这是SQL小提琴:http://sqlfiddle.com/#!4/98ce9/1
oracle中的"中位数"函数以一种简洁的方式完成了其他答案.
以下是Oracle文档的链接 - https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions086.htm
它可以将arg作为数值数据类型或非数字数据类型,可以隐式转换为数字.
SQL> desc x1
Name Null? Type
----------------------------------------- -------- ----------------------------
A NOT NULL NUMBER
D DATE
SQL> select * from x1;
A D
---------- ---------
1 11-DEC-14
2 13-DEC-14
3 22-DEC-14
4 02-DEC-14
SQL> select median(d) from x1;
MEDIAN(D)
---------
12-DEC-14
Run Code Online (Sandbox Code Playgroud)