我想在sql中获取平均日期,我不知道如何做到这一点.我有以下字段:
ID Date1 Date2 Date3
1 05/04/2012 08/09/2012 07/02/2012
Run Code Online (Sandbox Code Playgroud)
我想添加另一个列,显示ID号1的平均日期.我只做了平均数但从未做过平均日期.谢谢
你可以使用这样的东西,将日期转换为a float然后取平均值:
select t.id, t.date1, t.date2, t.date3, src.AvgDate
from yourtable t
inner join
(
select id, cast(avg(date) as datetime) AvgDate
from
(
select id, cast(cast(date1 as datetime) as float) date
from yourtable
union all
select id, cast(cast(date2 as datetime) as float) date
from yourtable
union all
select id, cast(cast(date3 as datetime) as float) date
from yourtable
) x
group by id
) src
on t.id = src.id;
Run Code Online (Sandbox Code Playgroud)
由于您的日期值跨越多列,因此我首先执行unpivot或者union all在单个列中获取值,然后获取该值的平均值.
以下是使用该UNPIVOT函数的另一个示例:
select t.id, t.date1, t.date2, t.date3, src.AvgDate
from yourtable t
inner join
(
select id, cast(avg(date) as datetime) AvgDate
from
(
select id, cast(cast(date as datetime) as float) date
from yourtable
unpivot
(
date
for col in (date1, date2, date3)
) unpiv
) x
group by id
) src
on t.id = src.id;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11287 次 |
| 最近记录: |