在 Google 表格中,我尝试编写一个查询(不是独立的数据透视表或脚本),它根据 if/then 语句按计算值分组。
这是我的示例数据:
Name Days
Bob 0
Ed 1
Frank 2
Joey 4
Deluth 7
Henry 12
按 B 列分组非常简单:
=QUERY(A1:B7,"SELECT B, COUNT(B) GROUP BY B")
哪些输出:
Days count
0 1
1 1
2 1
4 1
7 1
12 1
但我想做的是将这些天分组到特定的桶中。桶和期望的输出将是这个期望的输出:
Days count
0 1
1 1
2-5 2
6-9 1
10+ 1
所以它几乎是一个“if 0 then '0', if 1 then '1', if >1 AND <=5 then '2-5', etc., with a Group By at the end?这怎么会以QUERY格式书写?
最佳答案
如果您在(比如说)G2:G6 中有每个范围的上限,您可以使用 Frequency 来获得结果:
=frequency(B2:B,G2:G)
然后您可以将它与您的 bin 单元格结合起来,将两列放在一起:
=ArrayFormula({D2:D6,frequency(B2:B,G2:G)})
从 bin 单元格中提取上限有点笨拙,但您可以在没有辅助列的情况下像这样将它们放在一起:
=ArrayFormula({D2:D6,frequency(B2:B,--(right(D2:D5,len(D2:D5)-iferror(find("-",D2:D5),0))))})
请注意,您不需要定义“10+”范围,除非出于显示目的,Frequency 会自动将所有剩余值(9 以上)分组到一个单独的 bin 中。
如果您愿意,您可以使用一系列嵌套的 if 语句或(更好的)vlookup 重新编码原始日期值,并将结果传递给具有分组的查询。
关于if-statement - Google 表格 - 按 If/Then 桶分组,计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52630619/