查询电子表格或SQL中的最后几行

时间:2013-07-29 23:16:05

标签: sql google-sheets spreadsheet

A1 包含Sheet1的 A

的唯一转置数据
=TRANSPOSE(UNIQUE(QUERY(Sheet1!$A:$A;"select A";1)))

A2 包含以下代码:

=QUERY(Sheet1!$A:$B;"select B where A like '%"&A1&"%'";0)

Sheet1 的col A 标签为 name ,col B 标签为 height

名称有不同数量的数据,这就是我想仅列出最新数据的原因。 所以: 如何在不分类数据的情况下减少 A2 的查询以仅显示最后3个内容?(更新后的问题)

更新: 以下策略可以解决,希望有更多干净的方法可以做: 始终在 Sheet1 的内容上方添加新数据,然后将limit 3添加到查询中。

这是沙箱:https://docs.google.com/spreadsheet/ccc?key=0As_Zg0RxlMgXdFR2M3RpT05MX01tSlRKR0RrTXlFb0E&usp=sharing

1 个答案:

答案 0 :(得分:2)

eaposztrof,chopie,kurczę

只有当最近一行是第一行时,

QUERY + LIMIT才会有效。

但是,如果最近的行位于底部 - QUERY解决方案将在适当OFFSET使用时执行此操作。然而,对于没有任何序列/日期标识符的数据使用OFFSET,您需要计算内容行并假设最后一行是最新的。这会强制使用FILTER - 另一个类似于查询的查询。

考虑将时间戳添加到原始数据表中,并使用简单的单个FILTER / SORT公式。现在,这将根据需要显示您的数据:

QUERY(Sheet1!$A:$B;"select B where A like '%"&A1&"%' offset "&(COUNT(FILTER(Sheet1!$B2:$B;Sheet1!$A2:$A=A1))-3);0)

诀窍是使用Google查询语言(https://developers.google.com/chart/interactive/docs/querylanguage#Offset)中的offset子句,该子句首先评估X行。我们可以通过计算偏移来获得最后3行。由于您没有时间戳或ID,因此假设底行是最新的,您想忽略起始行:

  1. 计算匹配条件COUNT(FILTER(Sheet1!$B2:$B;Sheet1!$A2:$A=A1))的行(我在QUERY中的这个过滤器我不喜欢 - 效率不高)

  2. 减去“3”以获得偏移(这就是-3之后硬编码COUNT的原因。

  3. 最有效的解决方案是编写自己的脚本,其功能与=myfunction相似(不幸的是,要使用.setValues脚本允许此功能需要添加到某个事件或上层菜单栏,但这是单独的故事)。