Google 表格查询分组依据 / 每个组的 first n



我正在尝试为每组第一n找到一个简单的解决方案。

我有一个数据表,第一列日期和其余数据。我想根据日期进行分组,因为每个日期允许多个条目。对于第二列一些数字,但需要第一条记录。

目前我可以使用的聚合函数是 MIN((,但它将返回最低值而不是第一个值。

A            B
01/01/2018   10
01/01/2018   15
02/01/2018   10
02/01/2018   2
02/01/2018   100
02/01/2018   20
03/01/2018   5
03/01/2018   2

期望的输出

A            B
01/01/2018   10
02/01/2018   10
03/01/2018   5

使用 MIN(( 的当前结果 - 不需要

A            B
01/01/2018   10
02/01/2018   2
03/01/2018   2

遗憾的是,Google表格中没有FIRST((聚合函数,这将使这变得容易得多。

我看到了几个使用行号和 ArrayQuery 的例子,但这似乎对我不起作用。大约有 5000 行数据,因此尽量保持高效,而不必在任何更改时重新计算整个工作表,每次更改需要几秒钟。

目前我有这个,它附加了带有行号的第三列:

=query({A1:B, arrayformula(row(A1:B))}, "select min(Col1),min(Col2) group by Col1")

谢谢


编辑 1


建议的解决方案是=SORTN(A:B,2^99,2,1,1),这是一个干净简单的解决方案。但是,这需要大范围的"可用空间"来显示返回的数据集。想象一下 3000+ 行。

我希望有一个基于QUERY()的解决方案,因为我想对结果进行进一步的操作。具体来说,计算不同值的出现次数。

例如:我想要一个返回的数据集

A            B
01/01/2018   10
02/01/2018   10
03/01/2018   5

然而,我想计算这些值的出现次数(然后忽略日期(。例如:

B    C
10   2
5    1

也许我通过使用数字混淆了这种情况? ColB 中的"数据"是 TEXT(短 3 个字母的代码(,但我使用数字来表明我不能使用 MIN(( 函数,因为它返回数字上的最低值。

简而言之:

  • 浏览所有行(3000 +行(并按特定日期的第一行分组
  • 返回该行的第一个值
  • COUNT(( 这些 FIRST 值的所有唯一出现次数,忽略日期。只是一个包含唯一值及其计数的列表(同样,只有任何特定日期的第一个(
=SORTN(A:B,2^99,2,1,1)

如果数据按示例中的排序,则可以使用 SORTN(( 轻松删除重复项

相关内容

  • 没有找到相关文章

最新更新