الاسم البديل: max_by
argMax
أُضيف في: v1.1.0
يحسب قيمة arg المقابلة لأكبر قيمة لـ val. وإذا وُجدت عدة صفوف تكون فيها val هي القيمة القصوى نفسها، فإن قيمة arg المرتبطة التي ستُعاد ليست حتمية.
ويعمل كلٌّ من arg وmax كـ دوال تجميعية، كما أن كليهما يتخطى Null أثناء المعالجة ويُرجع قيمًا غير Null إذا كانت هذه القيم متاحة.
انظر أيضًا
البنية
argMax(arg, val)الأسماء البديلة: max_by
الوسائط
arg— الوسيط الذي تُرجَع قيمته عند العثور على القيمة العظمى.const Stringval— القيمة العظمى.(U)Int8/16/32/64أوFloat*أوDateأوDateTimeأوTuple
القيمة المُعادة
تعيد قيمة arg المقابلة لأكبر قيمة في val. النوع مطابق لنوع arg.
أمثلة
الاستخدام الأساسي
CREATE TABLE salary
(
user String,
salary UInt32
)
ENGINE = Memory AS
SELECT *
FROM VALUES(('worker', 1000), ('manager', 3000), ('director', 5000));
SELECT argMax(user, salary) FROM salary;┌─argMax(user, salary)─┐
│ director │
└──────────────────────┘مثال موسّع للتعامل مع NULL
CREATE TABLE test
(
a Nullable(String),
b Nullable(Int64)
)
ENGINE = Memory AS
SELECT *
FROM VALUES(('a', 1), ('b', 2), ('c', 2), (NULL, 3), (NULL, NULL), ('d', NULL));
SELECT argMax(a, b), max(b) FROM test;┌─argMax(a, b)─┬─max(b)─┐
│ b │ 3 │
└──────────────┴────────┘استخدام Tuple في المعاملات
SELECT argMax(a, (b,a)) FROM test;┌─argMax(a, (b, a))─┐
│ c │
└───────────────────┘