我有一个包含客户和得分的表(基于不同的因素,在这种情况下不相关;一个客户可以有多个得分),看起来像这样:
customer_id | score | score_giver_id
====================================
1 | 100 | 1
1 | 102 | 1
1 | 101 | 1
1 | 140 | 1
2 | 131 | 3
1 | 44 | 1
3 | 223 | 1
3 | 1 | 2
3 | 201 | 1
3 | 211 | 1
3 | 231 | 1
3 | 243 | 1
本score_giver_id
是无关紧要的,但我还是想拿来。
在上面的示例中,当按customer_id分组时获得第50个百分点时,结果应为(在此示例中,我选择了第50个百分点,因为它说明了我想做得更好):
customer_id | score | score_giver_id
====================================
1 | 101 | 1
2 | 131 | 3
3 | 223 | 1
我使用了这里描述的方法。
我需要获取分别在PostgreSQL的第10个百分点和第90个百分点的值。我已经看到从9.4开始有一个ntile
功能,但是我不太了解它的工作原理,作用以及是否对我有帮助。
我已经找到了一个不错的MySQL代码段,该代码段可以工作(即使有一些警告),但是我想使用内置函数(如果可用)(对于MySQL没有,因此是该代码段)。