Come restituire l'elenco DISTINCT / UNIQUE di testo tramite Google QUERY?


12

Dato l'elenco di categorie e sottocategorie:

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

Vorrei restituire tutte le categorie principali uniche in base alla categoria secondaria.

Non voglio usare:

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

poiché restituisce l'elenco con i duplicati (il ritorno del primo elemento non aiuta neanche).

Quello che sto provando è:

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

ma mi dà l'errore:, CANNOT_GROUP_WITHOUT_AGGquindi sto cercando di trovare qualcosa di equivalente a uno DISTINCT(A)o UNIQUE(A), ma queste funzioni non esistono.

Esiste una funzione nel linguaggio di query dell'API di visualizzazione di Google equivalente a DISTINCT / UNIQUE per restituire un elenco di valori univoci?

Risposte:


16

Senza una query:

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

Soluzione più semplice.
Omiod,

8

Devi aggiungere una colonna helper all'interno della QUERYformula, in questo modo:

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

L'aggiunta di un'altra QUERYformula aiuterà a rimuovere la colonna helper:

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

8

Oltre a utilizzare la sempre utile funzione UNIQUE attorno a FILTER, come user79865suggerito, puoi anche usare UNIQUE attorno alla funzione QUERY originale (che può essere più applicabile e utile in altri scenari per preservare le opzioni e la flessibilità di QUERY quando FILTER non è sufficiente ).

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


4

Soluzione senza funzioni helper / wrapper:

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

2

Usa la Unique(range)funzione

Esempio:

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

Questo funzionerà con il recupero di una colonna. È possibile utilizzare questa tecnica per esplorare ulteriormente l'attività. È più facile. A, B, C sono colonne di Sheet2 mentre E1, E2 sono del foglio di lavoro corrente circondato da &.


0

OP richiede specificamente tramite Google QUERY ma esiste un precedente che un altro A non richiede un QUERY e IMO una soluzione migliore (perché più completa e versatile) sarebbe applicare una tabella pivot:

Esempio WA82879

Questo (e l'altro As) sarebbe una migliore dimostrazione di soluzioni se il campione di dati fosse più realistico.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.