Jak zwrócić DISTINCT / UNIQUE listę tekstów przez Google QUERY?

12

Biorąc pod uwagę listę kategorii i podkategorii:

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

Chciałbym zwrócić wszystkie unikalne główne kategorie na podstawie kategorii drugorzędnej.

Nie chcę używać:

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

ponieważ zwraca listę z duplikatami (zwrócenie pierwszego elementu też nie pomoże).

Próbuję:

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

ale daje mi błąd: CANNOT_GROUP_WITHOUT_AGGdlatego próbuję znaleźć coś równoważnego albo, DISTINCT(A)albo UNIQUE(A), ale te funkcje nie istnieją.

Czy w języku zapytań interfejsu API Google Visualization jest jakaś funkcja równoważna DISTINCT / UNIQUE do zwracania listy unikalnych wartości?

kenorb
źródło

Odpowiedzi:

16

Bez zapytania:

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

źródło
Najprostsze rozwiązanie.
Omiod,
8

Musisz dodać kolumnę pomocnika do QUERYformuły, na przykład:

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

Dodanie innej QUERYformuły pomoże usunąć kolumnę pomocnika:

=QUERY(
   QUERY(
     {A1:B6, A1:A6},
     "SELECT Col1, COUNT(Col3) WHERE Col2 = 'SubCatA' GROUP BY Col1"
   ), 
   "SELECT Col1"
 )
Jacob Jan Tuinstra
źródło
8

Oprócz korzystania z zawsze przydatnej funkcji UNIKALNEJ wokół FILTER, jak user79865sugeruje, można także używać UNIKALNEJ wokół oryginalnej funkcji QUERY (która może być bardziej przydatna i pomocna w innych scenariuszach, aby zachować opcje i elastyczność QUERY, gdy FILTER nie wystarczy ).

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

aconlin
źródło
4

Rozwiązanie bez funkcji pomocniczych / opakowania:

=QUERY(A1:B6,"SELECT MAX(A) WHERE B = 'SubCatA' GROUP BY A LABEL MAX(A) ''")
David Vielhuber
źródło
2

Użyj Unique(range)funkcji.

Przykład:

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

Działa to przy pobieraniu jednej kolumny. Możesz użyć tej techniki do dalszego badania swojego zadania. To jest łatwiejsze. A, B, C są kolumnami z Arkusza 2, natomiast E1, E2 pochodzą z bieżącego arkusza roboczego otoczonego przez &.

M. Waqar Hasan Khan
źródło
0

OP konkretnie pyta za pośrednictwem Google QUERY, ale istnieje precedens, że inne A nie wymaga QUERY, a IMO lepszym rozwiązaniem (ponieważ bardziej wszechstronnym i wszechstronnym) byłoby zastosowanie tabeli przestawnej:

Przykład WA82879

Ten (i drugi As) byłby lepszym przykładem rozwiązań, gdyby próbka danych była bardziej realistyczna.

orzechy
źródło
-1

A może po prostu:

= UNIQUE(A1:B6)
K9Blaze
źródło