¿Cómo devolver la lista de texto DISTINCT / UNIQUE a través de Google QUERY?

12

Dada la lista de categorías y subcategorías:

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

Me gustaría devolver todas las categorías principales únicas basadas en la categoría secundaria.

No quiero usar:

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

ya que devuelve la lista con duplicados (devolver el primer elemento tampoco ayudará).

Lo que intento es:

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

pero me da el error: CANNOT_GROUP_WITHOUT_AGG, por lo tanto, estoy tratando de encontrar algo equivalente a cualquiera de los dos DISTINCT(A)o UNIQUE(A), pero no existe estas funciones.

¿Hay alguna función en el lenguaje de consulta API de visualización de Google equivalente a DISTINCT / UNIQUE para devolver la lista de valores únicos?

kenorb
fuente

Respuestas:

16

Sin una consulta:

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

fuente
La solución más simple.
Omiod
8

Debe agregar una columna auxiliar dentro de la QUERYfórmula, así:

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

Agregar otra QUERYfórmula ayudará a eliminar la columna auxiliar:

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

Además de usar la función ÚNICA siempre útil alrededor del FILTRO, como user79865sugiere, también puede usar ÚNICO alrededor de la función CONSULTA original (que puede ser más aplicable y útil en otros escenarios para preservar las opciones y la flexibilidad de la CONSULTA cuando FILTRO no es suficiente )

Al igual que: =UNIQUE(QUERY(A1:B6,"SELECT A WHERE B = 'SubCatA'"))

Aconlin
fuente
4

Solución sin funciones de ayuda / envoltura:

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

Usa la Unique(range)función.

Ejemplo:

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

Esto funcionará en la recuperación de una columna. Puede usar esta técnica para explorar más su tarea. Esto es mas facil. A, B, C son columnas de Sheet2 mientras que E1, E2 son de la hoja de trabajo actual rodeada por &.

M Waqar Hasan Khan
fuente
0

OP pregunta específicamente a través de Google QUERY, pero existe un precedente de que otra A no requiere una QUERY e IMO, una mejor solución (porque más completa y versátil) sería aplicar una tabla dinámica:

Ejemplo WA82879

Esto (y el otro As) serían mejores demostraciones de soluciones si la muestra de datos fuera más realista.

nueces
fuente
-1

¿Qué tal solo:

= UNIQUE(A1:B6)
K9Blaze
fuente