SQL ANY_VALUE 函数

摘要:在本教程中,您将学习如何使用 SQL ANY_VALUE() 聚合函数从一个组中选择任意一个值。

SQL ANY_VALUE 聚合函数简介 #

在 SQL 中,ANY_VALUE 聚合函数从一组值中返回任意一个值。

与其他聚合函数(如返回特定值的 MINMAX)不同,ANY_VALUE 从一组值中选取一个值,但不保证返回哪一个。

在实践中,您会发现在返回值与分组无关的查询中,ANY_VALUE 非常有用。

以下是 ANY_VALUE 函数的语法:

ANY_VALUE(expression)Code language: SQL (Structured Query Language) (sql)

在此语法中,expression 可以是您希望返回任意值的表列或表达式。

SQL ANY_VALUE 函数示例 #

我们将使用来自HR 示例数据库employeesdepartments 表。

SQL ANY_VALUE Aggregate Function - Employees & Departments Tables

查询部门及各部门中的任意一名员工 #

以下查询使用 ANY_VALUE 聚合函数返回由 department_id 指定的每个部门中的任意一名员工:

SELECT
  department_id,
  ANY_VALUE (first_name)
FROM
  employees
GROUP BY
  department_id
ORDER BY
  department_id;Code language: SQL (Structured Query Language) (sql)

试一试

输出

 department_id | any_value
---------------+-----------
             1 | Jennifer
             2 | Michael
             3 | Shelli
             4 | Susan
             5 | Payam
             6 | David
             7 | Hermann
             8 | Jack
             9 | Steven
            10 | Luis
            11 | ShelleyCode language: SQL (Structured Query Language) (sql)

结果集包含 department_id 列的值和 first_name 列的任意值。

您可以使用 inner join 子句将 employees 表与 departments 表连接起来,以包含部门名称。

SELECT
  department_name,
  ANY_VALUE (first_name) employee
FROM
  employees e
  INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
  department_name
ORDER BY
  department_name;Code language: SQL (Structured Query Language) (sql)

试一试

输出

 department_name  | employee
------------------+----------
 Accounting       | William
 Administration   | Jennifer
 Executive        | Lex
 Finance          | Daniel
 Human Resources  | Susan
 IT               | Diana
 Marketing        | Pat
 Public Relations | Hermann
 Purchasing       | Sigal
 Sales            | Jack
 Shipping         | MatthewCode language: SQL (Structured Query Language) (sql)

查询高薪组中的员工信息 #

以下查询将员工按高薪和低薪分组,并为每个组选择一名任意员工的姓名:

SELECT
  CASE
    WHEN salary > 10000 THEN 'High Salary'
    ELSE 'Low Salary'
  END AS salary_group,
  ANY_VALUE (first_name) AS employee
FROM
  employees
GROUP BY
  CASE
    WHEN salary > 10000 THEN 'High Salary'
    ELSE 'Low Salary'
  END;Code language: SQL (Structured Query Language) (sql)

试一试

输出

 salary_group | employee
--------------+-----------
 High Salary  | Steven
 Low Salary   | AlexanderCode language: SQL (Structured Query Language) (sql)

摘要 #

  • 使用 ANY_VALUE 聚合函数从一组值中选择一个任意值。
本教程是否有帮助?
© .