min_by toplama işlevi

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime

Gruptaki ikinci bir ifadenin en küçük değeriyle ilişkili bir ifadenin değerini döndürür. İsteğe bağlı üçüncü bağımsız değişkenle, sıralama ifadesinin en küçük değerlerine limit karşılık gelen en çok değer içeren bir dizi döndürür. Semantik, karşı sıralamaya sahip toplama işleviyle aynıdırmax_by.

Sözdizimi

min_by(expr, ordExpr) [FILTER ( WHERE cond ) ]

Şunun için geçerlidir:evet olarak işaretlendi Databricks SQL evet olarak işaretlendi Databricks Runtime 18.1 ve üzeri

min_by(expr, ordExpr, limit) [FILTER ( WHERE cond ) ]

Bu işlev, pencere fonksiyonu olarak OVER yan tümcesi kullanılarak da çağrılabilir.

Argümanlar

  • expr: Değeri döndürülecek ifade. Herhangi bir veri türü olabilir.
  • ordExpr: En düşük değeri (sıralama anahtarı) belirlemek için kullanılan ifade. Sipariş edilebilir bir tür olmalıdır.
  • limit: (İsteğe bağlı) INT Döndürülecek en fazla değer sayısını temsil eden değer. 0'dan büyük ve 100.000'den küçük veya buna eşit olmalıdır. Sağlandığında, işlev en çok limit değer içeren bir dizi döndürür.
  • cond: Toplama için kullanılan satırları filtreleyerek isteğe bağlı bir boole ifadesi.

İadeler

olmadan limit, sonuç türü türüyle eşleşir expr. Birden çok satır aynı minimum değerine ordExprsahipse, sonuç belirleyici değildir.

ile limit: ARRAY öğesi türü türüyle eşleşen değerlerden biri expr. Dizi en çok limit öğe içerir. Sıralamalara NULL karşılık gelen değerler dahil değildir. Tüm sıralama değerleri ise NULL, sonuç olur NULL. Birden çok satır aynı en küçük değerleri paylaşıyorsa işlev belirleyici değildir.

Not

STRINGgibi belirli UTF8_LCASE harmanlamaları için sonuç da belirleyici olmayabilir.

Örnekler

> SELECT min_by(x, y) FROM VALUES (('a', 10)), (('b', 50)), (('c', 20)) AS tab(x, y);
 a

> SELECT min_by(x, y, 2) FROM VALUES (('a', 10)), (('b', 50)), (('c', 20)) AS tab(x, y);
 [a, c]

> SELECT min_by(x, y COLLATE UTF8_LCASE) FROM VALUES (('a', 'X')), (('b', 'x')), (('c', 'Z')) AS tab(x, y);
 a (or b)