在 PostgreSQL 中查找日期的中位数
Find median of dates in PostgreSQL
我想知道是否有办法在 PostgreSQL 中找到 'median' 日期。目标是根据中位数得到所有日期中间的那个日期。
我尝试了以下修改后的中值函数:
select
percentile_cont(0.5) within group (order by date)
from cte
尝试这样做时,我收到以下错误消息:
SQL Error [42883]: ERROR: function percentile_cont(numeric, timestamp without time zone) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Position: 12
由于不支持日期,我想知道是否有另一种方法来计算日期的中值。
感谢您的任何意见!
您可以将日期值转换为整数,然后使用 percentile_cont
函数将其用于获取中值。
像这样,
SELECT
percentile_cont(0.5) within group (ORDER by cast(extract(epoch from dateCol1) as integer))
FROM table1
上面给出了中位日期,但是是数值,要将其转换回日期类型,使用to_timestamp
函数像这样,
select to_timestamp(1638662400)::date
#gives 2021-12-05
我想知道是否有办法在 PostgreSQL 中找到 'median' 日期。目标是根据中位数得到所有日期中间的那个日期。
我尝试了以下修改后的中值函数:
select
percentile_cont(0.5) within group (order by date)
from cte
尝试这样做时,我收到以下错误消息:
SQL Error [42883]: ERROR: function percentile_cont(numeric, timestamp without time zone) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Position: 12
由于不支持日期,我想知道是否有另一种方法来计算日期的中值。
感谢您的任何意见!
您可以将日期值转换为整数,然后使用 percentile_cont
函数将其用于获取中值。
像这样,
SELECT
percentile_cont(0.5) within group (ORDER by cast(extract(epoch from dateCol1) as integer))
FROM table1
上面给出了中位日期,但是是数值,要将其转换回日期类型,使用to_timestamp
函数像这样,
select to_timestamp(1638662400)::date
#gives 2021-12-05