繁体   English   中英

如何从月份表中的日期计算每月中位数?

[英]How to calculate median monthly from date of month table?

我的数据集:

Date         Num_orders
Mar 21 2019  69
Mar 22 2019  82
Mar 24 2019  312
Mar 25 2019  199
Mar 26 2019  2,629
Mar 27 2019  2,819
Mar 28 2019  3,123
Mar 29 2019  3,332
Mar 30 2019  1,863
Mar 31 2019  1,097
Apr 01 2019  1,578
Apr 02 2019  2,353
Apr 03 2019  2,768
Apr 04 2019  2,648
Apr 05 2019  3,192
Apr 06 2019  2,363
Apr 07 2019  1,578
Apr 08 2019  3,090
Apr 09 2019  3,814
Apr 10 2019  3,836
...

我需要从同月的天数计算每月的订单中位数:

想要的结果:

Month      Median_monthly
Mar 2019   1,863
Apr 2019   2,768
May 2019   2,876
Jun 2019   ...
...

我尝试使用函数 date_trunc 从数据集中提取月份,然后按“月份”分组,但没有成功。 感谢您的帮助,我使用 Google Bigquery (#standard) 环境!

可能您尝试使用不能与GROUP BY一起使用的PERCENTILE_CONT

尝试使用APPROX_QUANTILES (x, 100)[OFFSET(50)]。 它应该与GROUP BY

SELECT APPROX_QUANTILES](Num_orders, 100)\[OFFSET(50)\] AS median
FROM myTable
GROUP BY Month

您可以在子查询中使用 PERCENTILE_CONT 的替代方法:

SELECT
  DISTINCT Month, median
FROM (
  SELECT
    Month,
    PERCENTILE_CONT(Num_orders, 0.5) OVER(PARTITION BY Month) AS median
  FROM myTable
)

这通常使用DISTINCT来完成:

SELECT DISTINCT DATE_TRUNC(month, date),
       PERCENTILE_CONT(Num_orders, 0.5) OVER (PARTITION BY DATE_TRUNC(month, date) AS median
FROM myTable;

注意:有两个百分位函数, PERCENTILE_CONT()PERCENTILE_DISC() 当数据中间存在“平局”时,它们会有不同的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM