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