使用中位数和分组依据以及谷歌表格进行查询

xyz*_*333 6 lambda mean median google-sheets google-query-language

我需要获得分组中位数

我已经对表单的数据进行了分组

From    type                 Weight
A       person-person        4
A       person-person        3
A       person-organization  11
A       person-person        5
A       person-organization  6
B       person-person        2
B       person-organization  3
B       person-organization  7
C       person-person        5
C       person-person        2
C       person-organization  15
S       person-organization  7
S       person-person        4
S       person-person        3
Run Code Online (Sandbox Code Playgroud)

我需要获取按列 A 分组的中位数,其中列 B = '人-人'

A   value1
B   value2
C   value3
S   value4
Run Code Online (Sandbox Code Playgroud)

我可以用以下方法对平均值执行此操作:

=QUERY(Connections!A:C,"Select A, Avg(C) where B='person-person' and C is not null group by A",1)
Run Code Online (Sandbox Code Playgroud)

我尝试过使用该Median函数,但无法将其按 A 列分组

谷歌表格 https://docs.google.com/spreadsheets/d/1ZPia3LkVg2Pt4YGIH4KtW49G2uElRFcvWLY6LYOQ-Ss/edit?usp=sharing

这样可以得到中位数吗?

谢谢

pla*_*er0 4

不幸的是,在 Google Sheets 中QUERY(nor ARRAYFORMULA) 函数根本不支持中位数。


可拖动的解决方案:

=MEDIAN(FILTER(C:C, A:A=H2))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


更新:

现在可以了:

=BYROW(H2:H7, LAMBDA(xx, MEDIAN(FILTER(C:C, A:A=xx))))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

甚至喜欢:

=BYROW(UNIQUE(FILTER(A:A, B:B="person-person")), LAMBDA(xx, MEDIAN(FILTER(C:C, A:A=xx))))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述