如何通过Google QUERY返回DISTINCT / UNIQUE文本列表?


12

给出类别和子类别的列表:

CatA    SubCatA
CatA    SubCatA
CatB    SubCatB
CatB    SubCatB
CatC    SubCatC
CatC    SubCatC

我想根据次要类别返回所有唯一的主要类别。

我不想使用:

=QUERY(A1:B6,"SELECT A WHERE B = 'SubCatA'")

因为它返回的是重复列表(返回第一个元素也无济于事)。

我正在尝试的是:

=QUERY(A1:B6,"SELECT A WHERE B = 'SubCatA' GROUP BY A")

但这给了我错误:CANNOT_GROUP_WITHOUT_AGG,因此我试图找到与DISTINCT(A)或等效的东西UNIQUE(A),但是这些功能不存在。

Google Visualization API查询语言中是否有任何函数等效于DISTINCT / UNIQUE以返回唯一值列表?

Answers:


16

没有查询:

=unique(filter(A1:A6, B1:B6="SubCatA"))

最简单的解决方案。
Omiod

8

您需要在QUERY公式内添加一个帮助器列,如下所示:

=QUERY(
   {A1:B6, A1:A6},
   "SELECT Col1, COUNT(Col3) WHERE Col2 = 'SubCatA' GROUP BY Col1 LABEL COUNT(Col3) ''"
 )

添加另一个QUERY公式将有助于删除帮助器列:

=QUERY(
   QUERY(
     {A1:B6, A1:A6},
     "SELECT Col1, COUNT(Col3) WHERE Col2 = 'SubCatA' GROUP BY Col1"
   ), 
   "SELECT Col1"
 )

8

user79865建议的那样,除了在FILTER周围使用永远有用的UNIQUE函数外,您还可以在原始QUERY函数周围使用UNIQUE(在FILTER不够用的情况下,它可能更适用并且在其他情况下有助于保留QUERY的选项和灵活性) )。

像这样: =UNIQUE(QUERY(A1:B6,"SELECT A WHERE B = 'SubCatA'"))



2

使用Unique(range)功能。

例:

=unique(query(Sheet2!A3:F2372,"SELECT C WHERE A contains '" &E1& "' AND B CONTAINS '" &E2& "'  ",-1))

这将适用于一列检索。您可以使用此技术进一步探索您的任务。这比较容易。A,B,C是Sheet2中的列,而E1,E2是来自当前工作表的&包围。


0

OP专门通过Google QUERY进行询问但是有先例,另一个A不需要QUERY和IMO,更好的解决方案(因为更全面,更通用)将是应用数据透视表:

WA82879的例子

如果数据样本更真实,则此(以及其他As)将是解决方案的更好演示。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.