Bagaimana cara mengembalikan daftar teks DISTINCT / UNIQUE via Google QUERY?

12

Diberikan daftar kategori dan sub-kategori:

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

Saya ingin mengembalikan semua kategori utama unik berdasarkan kategori sekunder.

Saya tidak ingin menggunakan:

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

karena mengembalikan daftar dengan duplikat (mengembalikan elemen pertama tidak akan membantu baik).

Yang saya coba adalah:

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

tapi itu memberi saya kesalahan:, CANNOT_GROUP_WITHOUT_AGGkarena itu saya mencoba menemukan sesuatu yang setara dengan salah satu DISTINCT(A)atau UNIQUE(A), tetapi fungsi-fungsi ini tidak ada.

Apakah ada fungsi di Google Visualization API Query Language yang setara dengan DISTINCT / UNIQUE untuk mengembalikan daftar nilai unik?

kenorb
sumber

Jawaban:

16

Tanpa kueri:

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

sumber
Solusi paling sederhana.
Omiod
8

Anda perlu menambahkan kolom pembantu dalam QUERYrumus, seperti:

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

Menambahkan QUERYformula lain akan membantu menghapus kolom pembantu:

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

Selain menggunakan fungsi UNIQUE yang selalu berguna di sekitar FILTER, seperti yang user79865disarankan, Anda juga dapat menggunakan UNIQUE di sekitar fungsi QUERY asli (yang mungkin lebih berlaku dan membantu dalam skenario lain untuk mempertahankan opsi dan fleksibilitas QUERY ketika FILTER tidak cukup). ).

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

aconlin
sumber
4

Solusi tanpa fungsi pembantu / pembungkus:

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

Gunakan Unique(range)fungsinya.

Contoh:

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

Ini akan bekerja pada satu pengambilan kolom. Anda dapat menggunakan teknik ini untuk mengeksplorasi tugas Anda lebih lanjut. Ini lebih mudah. A, B, C adalah kolom dari Sheet2 sementara E1, E2 berasal dari lembar kerja saat ini dikelilingi oleh &.

M Waqar Hasan Khan
sumber
0

OP secara khusus bertanya melalui Google QUERY tetapi ada preseden bahwa A lain tidak memerlukan QUERY dan IMO solusi yang lebih baik (karena lebih komprehensif, dan serbaguna) akan menerapkan tabel pivot:

Contoh WA82879

Ini (dan As lainnya) akan menjadi demonstrasi solusi yang lebih baik jika sampel data lebih realistis.

kacang
sumber
-1

Bagaimana kalau saja:

= UNIQUE(A1:B6)
K9Blaze
sumber