【问题标题】:Google Sheets: select top N cases within groups using QUERYGoogle 表格:使用 QUERY 选择组内的前 N ​​个案例
【发布时间】:2018-07-29 17:06:20
【问题描述】:

我想做一个报告:“select salesmen who has N recent Status codes = 2,3,4,5”。

我的数据结构示例有 35 行(包括 1 个标题行): link。 该文件包含日期销售代码(销售员的id)、状态码(交易成功程度的id)和其他字段这对于目的来说不是必需的。

我最终使用了三个公式:

  1. QUERY 函数和 IMPORTRANGE
    在示例数据中,它稍微简单一些 - 仅从另一个工作表中获取销售代码、状态代码和日期,然后按日期、销售代码排序。 A9 中的公式:
    =QUERY({Source!D1:E, Source!A1:A}, $B$4, 1)

  2. 带有连续编号的附加列。 D10 中的公式:
    =ArrayFormula(if(len(A10:A), ROW(A10:A) - MATCH(A10:A,A10:A,0) - 8, ))

  3. 一个 QUERY 函数仅提取 N 个案例(比如说 5 个)。 F9 中的公式:
    =QUERY(A9:D, "select A, B where D <="&B3, 1)

有没有一种方法可以将所有 3 个步骤合二为一,这样我就可以使用一个(希望是快速 :))公式获得 F10:G24 中的输出?我试过的公式(为了可读性而扩展):

=QUERY(
    {
      QUERY({Source!D1:E, Source!A1:A}, $B$4, 1),
      ArrayFormula(
         IF(len(J10:J),
            ROW(J10:J) - MATCH(J10:J, J10:J, 0) - 8,
         )
      )
    },
    "select Col1, Col2 where Col4 <="&B3,
    1
)

它给了我错误:

“函数 ARRAY_ROW 参数 2 的行大小不匹配。预期:28。实际:991。”

我还尝试了ROW()MATCH() 中的有限数据范围,但这会产生一个空表。 在原始数据库中大约有 3500 行并且它们会扩展,所以我认为我应该坚持无限范围来自动提取数据。

【问题讨论】:

  • 我们可以假设原始数据是按销售代码排序的,即某个特定推销员的所有销售都在一起吗?
  • @TomSharpe,在原始数据中,每天都会添加所有销售额,并在数据库顶部输入最新信息。未应用排序。所以在任何一天,都可以有任何销售状态的推销员。
  • 我认为这是可行的,但必须重复排序 - 稍后会发布一些内容。

标签: google-sheets google-sheets-query


【解决方案1】:

嗯,这有点像 TBH 的噩梦 - 之前出现过类似的问题,但没有简单的答案。这是一个涉及多次重复基本查询的草稿-

=ArrayFormula(query({query(A2:E,"select * where E>=2 and E<=5  order by D, A desc"),
row(indirect("2:"&count(filter(E2:E,E2:E>=2,E2:E<=5))+1))-
match(query(A2:E,"select D where E>=2 and E<=5  order by D, A desc"),
query(A2:E,"select D where E>=2 and E<=5  order by D, A desc"),0)
},"select * where Col6<=5"))

但需要多看一下是否可以简化。

这是包含标题的全栏版本 - 我认为还可以

=ArrayFormula(query({query(A:E,"select * where E>=2 and E<=5  order by D, A desc"),
row(indirect("1:"&count(filter(E:E,E:E>=2,E:E<=5))+1))+1-
match(query(A:E,"select D where E>=2 and E<=5  order by D, A desc"),
query(A:E,"select D where E>=2 and E<=5  order by D, A desc"),0)
},"select * where Col6<=5"))

【讨论】:

  • 哇!谢谢!它正在工作!将使用IMPORTRANGE 在大型数据集上实现此逻辑。
猜你喜欢
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
  • 2021-11-26
  • 2013-01-25
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多