Aggregate
BigQuery
ANY_VALUE
Mengembalikan salah satu nilai dari group secara non-deterministik. Berguna untuk mengambil nilai dari kolom yang tidak di-aggregate ketika semua nilai dalam group sama.
Tipe hasil:
Sama dengan tipe inputDiperbarui: 7 Jan 2026Syntax
SQL
ANY_VALUE(expression [HAVING {MAX | MIN} expression2])Parameter
expressionanywajib
Kolom atau ekspresi yang akan diambil nilainya
HAVING MAX/MINclauseopsional
Mengambil nilai berdasarkan row dengan MAX/MIN dari expression2
Contoh Penggunaan
Mengambil Detail dari Group
SQL
1 SELECT 2 order_id, 3 ANY_VALUE(customer_name) as customer_name, 4 ANY_VALUE(customer_email) as customer_email, 5 SUM(quantity) as total_items, 6 SUM(amount) as total_amount 7 FROM `project.dataset.order_details` 8 GROUP BY order_id;
Mengambil info customer (yang sama per order) tanpa aggregate.
Hasil
| order_id | customer_name | customer_email | total_items | total_amount |
|---|---|---|---|---|
| O001 | John Doe | john@email.com | 5 | 1500000 |
| O002 | Jane Smith | jane@email.com | 3 | 850000 |
ANY_VALUE dengan HAVING MAX
SQL
1 SELECT 2 product_id, 3 ANY_VALUE(price HAVING MAX sale_date) as latest_price, 4 ANY_VALUE(sale_date HAVING MAX sale_date) as price_date 5 FROM `project.dataset.price_history` 6 GROUP BY product_id;
Mengambil harga terbaru berdasarkan tanggal terakhir.
Hasil
| product_id | latest_price | price_date |
|---|---|---|
| P001 | 1500000 | 2024-06-25 |
| P002 | 850000 | 2024-06-24 |
ANY_VALUE dengan HAVING MIN
SQL
1 SELECT 2 employee_id, 3 ANY_VALUE(department HAVING MIN start_date) as first_department, 4 ANY_VALUE(department HAVING MAX start_date) as current_department 5 FROM `project.dataset.employee_history` 6 GROUP BY employee_id;
Melihat departemen pertama dan saat ini dari karyawan.
Hasil
| employee_id | first_department | current_department |
|---|---|---|
| E001 | Junior Dev | Senior Engineer |
| E002 | Intern | Product Manager |