Função MySQL FIRST_VALUE

Resumo : neste tutorial, você aprenderá como usar a FIRST_VALUE()função MySQL para obter a primeira linha de um quadro, partição ou conjunto de resultados.

Introdução à função MySQL FIRST_VALUE()

É FIRST_VALUE()uma função de janela que permite selecionar a primeira linha de um quadro de janela, partição ou conjunto de resultados.

O seguinte ilustra a sintaxe da FIRST_VALUE()função:

FIRST_VALUE (expression) OVER (
   [partition_clause]
   [order_clause]
   [frame_clause]
)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

expressão

A FIRST_VALUE()função retorna o valor da expressionprimeira linha do quadro da janela.

A OVERcláusula consiste em três cláusulas: partition_clause, order_clause, e frame_clause.

cláusula_partição

A partition_clausecláusula divide as linhas dos conjuntos de resultados em partições às quais a função se aplica independentemente. O partition_clausetem a seguinte sintaxe:

PARTITION BY expr1, expr2, ...Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

cláusula_pedido

A order_clausecláusula especifica a ordem lógica das linhas em cada partição na qual a FIRST_VALUE()função opera. O seguinte mostra a sintaxe do order_clause:

ORDER BY expr1 [ASC|DESC], expr2 [ASC|DESC], ...Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

cláusula_frame

Define frame_clauseo subconjunto (ou quadro) da partição atual. Para obter informações detalhadas sobre a sintaxe da cláusula frame, consulte o tutorial de funções de janela .

Exemplos de funções MySQL FIRST_VALUE()

As instruções a seguir criam uma nova tabela chamada overtimee inserem dados de amostra para demonstração:

CREATE TABLE overtime (
    employee_name VARCHAR(50) NOT NULL,
    department VARCHAR(50) NOT NULL,
    hours INT NOT NULL,
    PRIMARY KEY (employee_name , department)
);
INSERT INTO overtime(employee_name, department, hours)
VALUES('Diane Murphy','Accounting',37),
('Mary Patterson','Accounting',74),
('Jeff Firrelli','Accounting',40),
('William Patterson','Finance',58),
('Gerard Bondur','Finance',47),
('Anthony Bow','Finance',66),
('Leslie Jennings','IT',90),
('Leslie Thompson','IT',88),
('Julie Firrelli','Sales',81),
('Steve Patterson','Sales',29),
('Foon Yue Tseng','Sales',65),
('George Vanauf','Marketing',89),
('Loui Bondur','Marketing',49),
('Gerard Hernandez','Marketing',66),
('Pamela Castillo','SCM',96),
('Larry Bott','SCM',100),
('Barry Jones','SCM',65);
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

1) Usando FIRST_VALUE()a função MySQL em todo o exemplo do conjunto de resultados da consulta

A declaração a seguir obtém o nome do funcionário, as horas extras e o funcionário que tem menos horas extras:

SELECT
    employee_name,
    hours,
    FIRST_VALUE(employee_name) OVER (
        ORDER BY hours
    ) least_over_time
FROM
    overtime;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Aqui está a saída:

Exemplo de função MySQL FIRST_VALUE

Neste exemplo, a ORDER BYcláusula ordenou as linhas do conjunto de resultados por horas e FIRST_VALUE()selecionou a primeira linha indicando o funcionário que teve menos horas extras.

2) Usando a função MySQL FIRST_VALUE() com exemplo de partições

A seguinte afirmação encontra o funcionário que tem menos horas extras em todos os departamentos:

SELECT
    employee_name,
    department,
    hours,
    FIRST_VALUE(employee_name) OVER (
        PARTITION BY department
        ORDER BY hours
    ) least_over_time
FROM
    overtime;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A saída é:

Neste exemplo:

  • Primeiro, a PARTITION BYcláusula divide os funcionários em partições por departamentos. Ou seja, cada partição é composta por funcionários que pertencem ao mesmo departamento.
  • Segundo, a ORDER BYcláusula especifica a ordem das linhas em cada partição.
  • Terceiro, FIRST_VALUE()opera em cada partição classificada por horas. Ele retorna a primeira linha de cada partição que é o funcionário que tem menos horas extras no departamento.

Resumo

  • Use a função MySQL FIRST_VALUE()para obter a primeira linha de um quadro de janela.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *