【发布时间】:2021-08-19 05:10:13
【问题描述】:
我有如下表格:
recorddate score
2021-05-01 0
2021-05-01 1
2021-05-01 2
2021-05-02 3
2021-05-02 4
2021-05-03 5
2021-05-07 6
并且希望每周获得score 的第 60 个百分位数。我试过了:
select distinct
recorddate
, PERCENTILE_disc(0.60) WITHIN GROUP (ORDER BY score)
OVER (PARTITION BY recorddate) AS top60
from tbl;
它返回如下内容:
recorddate top60
2021-05-01 1
2021-05-02 4
2021-05-03 5
2021-05-07 6
但我想要的结果是每周汇总(7 天)。 例如在 2021-05-07 结束的那一周:
recorddate top60
2021-05-01 ~ 2021-05-07 2
有解决办法吗?
【问题讨论】:
-
“top60”应该是什么?为什么你的一周跨越 8 天?
-
我编辑了关于一周的问题。 top60是累积排名。所以我想在一周内对分数进行排序并获得前 60% 的分数。谢谢
-
海森堡。 . .我仍然不明白在这种情况下“累积排名”应该是什么意思。也许 Erwin Brandstetter 理解得更好。
-
@Gordon:更多的是有根据的猜测,真的。
-
@Heisenberg:我冒昧地进行了编辑并使其更清晰。我做对了吗?
标签: sql postgresql datetime aggregate-functions percentile