计算postgres中数据频率的函数

Posted

技术标签:

【中文标题】计算postgres中数据频率的函数【英文标题】:Function to calculate frequencies of the data in postgress 【发布时间】:2018-05-18 22:27:41 【问题描述】:

我想按月计算数值变量的均值、标准差、百分位数 (25,50,75)、分类变量的频率和分类变量和数值变量的 NULL 频率。下面是示例数据。我有像 20+ 列和 15k+ 条记录。我想要执行的功能。

    Date          id  score_n  score_p  score_s  Reason 

 31-12-2016       1   0.5       6      5.0      energy_drink
 31-12-2016       4     6       3       3       soft_drink
 31-12-2016       5     3       4       2       energy_drink

【问题讨论】:

请检查您的标题的拼写:wiki.postgresql.org/wiki/Identity_Guidelines 【参考方案1】:

想法是:

select date_trunc('month', date) as yyyymm,
       avg(score_n) as avg, stddev(score_n),
       percentile_cont(0.25) within group (order by score_n),
       percentile_cont(0.50) within group (order by score_n),
       percentile_cont(0.75) within group (order by score_n)
from t
group by date_trunc('month', date);

您可以查看documentation中的聚合函数。

【讨论】:

,谢谢。 sql逻辑? 您需要使用cron 或您环境中的其他调度程序来安排作业。 我们可以把它写成存储函数/过程吗?

以上是关于计算postgres中数据频率的函数的主要内容,如果未能解决你的问题,请参考以下文章

如何计算grafana / postgres中不同记录的列值之间的差异

如何在带有 Postgres 的动态框架中使用窗口函数中的列值?

如何计算 Postgres 整数数据类型的位数?

postgres 取整函数 trunc

无法执行 plpgsql/postgres 中的函数

Postgres如何创建一个在查询中使用的函数