sql - 如何从月表中计算月中位数?
问题描述
我的数据集:
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) 环境!
解决方案
这通常会使用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()
。当数据中间有“领带”时,它们会产生不同的结果。
推荐阅读
- laravel - 当我在 Laravel 7 中运行“php artisan ui vue --auth”时会发生什么
- python - 在 Python 中提取唯一的 URL
- linux - ffmpeg 质量转换选项(视频压缩)
- ruby-on-rails-6 - ActionView::Template::Error(Webpacker 在 /app/public/packs/manifest.json 中找不到应用程序
- java - Hibernate Envers 错误修改了列表中的标志
- javascript - 有没有办法自定义嵌入在 SharePoint 现代网站模板中的 WebChat 机器人?
- javascript - 为什么会出现此错误:错误:连接 ECONNREFUSED?
- sql - 文本列的 SQL Pivot
- vue.js - 绘制画布大小时画布大小不同
- excel - 计算(不列出!)范围内的唯一项目以分配给变量