Wie kann ich eine DISTINCT / UNIQUE-Textliste über Google QUERY zurückgeben?

12

Angesichts der Liste der Kategorien und Unterkategorien:

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

Ich möchte alle eindeutigen Hauptkategorien basierend auf der sekundären Kategorie zurückgeben.

Ich möchte nicht verwenden:

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

da die Liste mit Duplikaten zurückgegeben wird (die Rückgabe des ersten Elements hilft auch nicht).

Was ich versuche ist:

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

aber es gibt mir den Fehler:, CANNOT_GROUP_WITHOUT_AGGdeshalb versuche ich etwas zu finden, das entweder DISTINCT(A)oder entspricht UNIQUE(A), aber diese Funktionen existieren nicht.

Gibt es in der Google Visualization API-Abfragesprache eine Funktion, die DISTINCT / UNIQUE entspricht, um eine Liste eindeutiger Werte zurückzugeben?

Kenorb
quelle

Antworten:

16

Ohne Abfrage:

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

quelle
Einfachste Lösung.
Omiod
8

Sie müssen der QUERYFormel eine Hilfsspalte hinzufügen , wie folgt:

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

Durch Hinzufügen einer weiteren QUERYFormel können Sie die Hilfsspalte entfernen:

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

Zusätzlich zur Verwendung der immer nützlichen UNIQUE-Funktion für FILTER, wie vorgeschlagen user79865, können Sie UNIQUE auch für die ursprüngliche QUERY-Funktion verwenden (die in anderen Szenarien möglicherweise besser anwendbar und hilfreich ist, um die Optionen und die Flexibilität von QUERY zu erhalten, wenn FILTER nicht ausreicht ).

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

Aconlin
quelle
4

Lösung ohne Helfer / Wrapper-Funktionen:

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

Verwenden Sie die Unique(range)Funktion.

Beispiel:

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

Dies funktioniert beim Abrufen einer Spalte. Mit dieser Technik können Sie Ihre Aufgabe weiter untersuchen. Das ist einfacher. A, B, C sind Spalten aus Blatt 2, während E1, E2 aus dem aktuellen Arbeitsblatt stammen, das von & umgeben ist.

M Waqar Hasan Khan
quelle
0

OP fragt speziell über Google QUERY, aber es gibt einen Präzedenzfall, dass ein anderes A keine QUERY und IMO erfordert. Eine bessere Lösung (weil umfassender und vielseitiger) wäre das Anwenden einer Pivot-Tabelle:

Beispiel WA82879

Dies (und das andere As) wäre eine bessere Demonstration von Lösungen, wenn die Datenstichprobe realistischer wäre.

pnuts
quelle
-1

Wie wäre es einfach:

= UNIQUE(A1:B6)
K9Blaze
quelle