如何计算年/周/月/日的中位数?

Posted

技术标签:

【中文标题】如何计算年/周/月/日的中位数?【英文标题】:How to calculate the median count for year / week/ month/day? 【发布时间】:2019-03-05 12:09:41 【问题描述】:

我在表中有一些数据,其中包含日期作为一列和计数(*)。

但我需要绘制该年/月/周/日的中位数或平均数图表,误差线代表数据的分布

SELECT DATE_PART(year,l_date) as year, (count(*))
from am_history
group by year;

它给出了每年的年份和行数。如何计算此计数(*)和误差(标准差)的中位数? 我知道如果一年我找到了查询,其余的月、周等都可以轻松完成。

我是计算统计的新手,请帮忙

【问题讨论】:

您能添加最终/预期结果吗?谢谢。 (1) 我删除了不兼容的数据库标签。请使用您正在使用的数据库进行标记(并使用适合该数据库的语法。(2)标准差通常与 平均值(“平均值”)一起使用,而不是中位数。 当然,我正在使用 aws redshift。我们如何找到计数的平均值?当我使用 avg (count(*)) 它给出错误? @GordonLinoff 对于“计数的平均值”,您期望得到什么?您期望结果为一排,还是每年一排?如果您期待一排,为什么要显示年份?如果您预计每年有一行,那么该年度的“平均计数”是什么意思? 【参考方案1】:

请试试这个。

SELECT DATEPART(year,l_date) as [year], count(l_date) as counts 
from am_history
group by DATEPART(year,l_date);

例子:---

Declare @tbl Table(
id INT ,
[group]  Varchar(50),
value varchar(50),
Dat DATETIME
)

INSERT INTO @tbl VALUES(1,'1.1.03.01.00.00',NULL,GETUTCDATE()-100)
INSERT INTO @tbl VALUES(2,'1.1.03.01.01.00',NULL,GETUTCDATE() + 7)
INSERT INTO @tbl VALUES(3,'1.1.03.01.02.00',NULL,GETUTCDATE()+10)

SELECT DATEPART(year,Dat)As years,count(Dat) as counts  FROM @tbl  group by DATEPART(year,Dat)

【讨论】:

但是,你如何找到这个计数的中位数?和错误(标准开发)?? 这不是红移答案。

以上是关于如何计算年/周/月/日的中位数?的主要内容,如果未能解决你的问题,请参考以下文章

mybatis中关于年,季,月,周,日的统计问题

如何在 SQL 中设置滚动的 7 天第 75 个百分位数?

2021年6月程序员工资统计,平均15052元

计算年、月、日的日期差异

2021年7月程序员工资统计,平均15302元

2021年7月程序员工资统计,平均15302元