如何计算年/周/月/日的中位数?
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)
【讨论】:
但是,你如何找到这个计数的中位数?和错误(标准开发)?? 这不是红移答案。以上是关于如何计算年/周/月/日的中位数?的主要内容,如果未能解决你的问题,请参考以下文章