Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime
Mengembalikan nilai ekspresi yang terkait dengan nilai terbesar ekspresi kedua dalam grup. Dengan argumen ketiga opsional, mengembalikan array hingga limit nilai yang sesuai dengan nilai terbesar ekspresi pengurutan.
Sintaks
max_by(expr, ordExpr) [FILTER ( WHERE cond ) ]
max_by(expr, ordExpr, limit) [FILTER ( WHERE cond ) ]
Fungsi ini juga dapat dipanggil sebagai fungsi jendela menggunakan klausa OVER.
Argumen
- expr: Ekspresi yang nilainya akan dikembalikan. Dapat berupa jenis data apa pun.
- ordExpr: Ekspresi yang digunakan untuk menentukan nilai maksimum (kunci pengurutan). Harus jenis yang dapat diurutkan.
-
batas: (Opsional) Nilai
INTyang menunjukkan jumlah maksimum nilai yang akan dikembalikan. Harus lebih besar dari 0 dan kurang dari atau sama dengan 100.000. Saat disediakan, fungsi mengembalikan array hinggalimitnilai. - cond: Ekspresi boolean opsional yang memfilter baris yang digunakan untuk agregasi.
Pengembalian
Tanpa limit: jenis hasil cocok dengan jenis expr. Jika beberapa baris memiliki nilai maksimum yang sama, ordExprhasilnya tidak deterministik.
Dengan : ARRAY nilai yang jenis elemennya cocok dengan limitjenis expr. Array berisi hingga limit elemen. Nilai yang NULL sesuai dengan urutan tidak disertakan. Jika semua nilai pemesanan adalah NULL, hasilnya adalah NULL. Jika beberapa baris memiliki nilai terbesar yang sama, fungsinya tidak deterministik.
Nota
Untuk kolase STRING tertentu, seperti UTF8_LCASE, hasilnya mungkin juga tidak deterministik.
Contoh
> SELECT max_by(x, y, 2) FROM VALUES (('a', 10)), (('b', 50)), (('c', 20)) AS tab(x, y);
[b, c]
-- Return top 2 values by ordering expression
> SELECT year, max_by(course, earnings, 2) FROM data GROUP BY year;
year: 2012, max_by(course, earnings, 2): [Java, c]
> SELECT max_by(x, y COLLATE UTF8_LCASE) FROM VALUES (('a', 'X')), (('b', 'x')), (('c', 'v')) AS tab(x, y);
a (or b)