web-dev-qa-db-ja.com

Google QUERYを介してテキストのDISTINCT / UNIQUEリストを返す方法

カテゴリとサブカテゴリのリストが与えられた場合:

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に相当する一意の値のリストを返す関数はありますか?

9
kenorb

次のように、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"
 )
7

クエリなし:

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

user79865が示唆するように、FILTERで常に便利なUNIQUE関数を使用することに加えて、元のQUERY関数でUNIQUEを使用することもできます(QUERYのオプションと柔軟性を維持するために、他のシナリオでより適用可能および役立つ場合があります) FILTERで十分でない場合)。

そのように:=UNIQUE(QUERY(A1:B6,"SELECT A WHERE B = 'SubCatA'"))

6
aconlin

Unique(range)関数を使用します。

例:

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

これは、1つの列の取得で機能します。この手法を使用して、タスクをさらに調査できます。これは簡単です。 A、B、CはSheet2の列で、E1、E2は&で囲まれた現在のワークシートの列です。

2

ヘルパー/ラッパー関数を使用しないソリューション:

=QUERY(A1:B6,"SELECT MAX(A) WHERE B = 'SubCatA' GROUP BY A LABEL MAX(A) ''")
2
David Vielhuber

OPはGoogle QUERYを介してを明確に要求しますピボットテーブルを適用します。

WA82879 example

データサンプルがより現実的な場合、これ(および他のAs)はソリューションのより良いデモンストレーションになります。

0
pnuts