ARGMIN_AGG

接受两个实参 targetarg,其中两者都是查询数据集中的列或列表达式。ARGMIN_AGG 在 target 中查找具有最小非 null 值的行,并返回该行中的 arg 值。如果多行包含最低 target 值,则 ARGMIN_AGG 将返回它找到的第一行中的 arg。使用 WITHIN GROUP ORDER BY 子句控制 ARGMMIN_AGG 先查找哪一行。

行为类型

不可变 — 如果 WITHIN GROUP ORDER BY 子句指定在组内解析为唯一值的一列或一组列;否则为 易变

语法

ARGMIN_AGG ( target, arg ) [ within‑group‑order‑by‑clause ]

参数

target, arg
查询数据集中的列。
within‑group‑order‑by‑clause
对每组行中的目标值进行排序:
WITHIN GROUP (ORDER BY { column‑expression[ sort-qualifiers ] }[,...])

sort‑qualifiers

   { ASC | DESC [ NULLS { FIRST | LAST | AUTO } ] }

此子句用于确定当多行包含最低目标值时返回哪一行;否则,结果可能会随着同一查询的每次迭代而变化。

示例

以下示例在 WITH 子句中调用 ARGMIN_AGG,以查找每个地区所有员工中的最低工资,并返回最低工资员工的 ID。主要查询返回工资金额和员工姓名:

=> WITH msr (employee_region, emp_id) AS
    (SELECT employee_region, argmin_agg(annual_salary, employee_key) lowest_paid_employee FROM employee_dim GROUP BY employee_region)
    SELECT msr.employee_region, ed.annual_salary AS lowest_salary, ed.employee_first_name||' '||ed.employee_last_name AS employee_name
     FROM msr JOIN employee_dim ed ON msr.emp_id = ed.employee_key ORDER BY annual_salary DESC;
         employee_region          | lowest_salary |  employee_name
----------------------------------+---------------+-----------------
 NorthWest                        |         20913 | Raja Garnett
 SouthWest                        |         20750 | Seth Moore
 West                             |         20443 | Midori Taylor
 South                            |         20363 | David Bauer
 East                             |         20306 | Craig Jefferson
 MidWest                          |         20264 | Dean Vu
(6 rows)

另请参阅

ARGMAX_AGG