- Categorias:
Funções de agregação (Geral)
MIN_BY¶
Encontra a(s) linha(s) contendo o valor mínimo para uma coluna e retorna o valor de outra coluna naquela linha.
Por exemplo, se uma tabela contiver as colunas employee_id
e salary
, MIN_BY(employee_id, salary)
retorna o valor da coluna employee_id
para a linha que tem o valor mais baixo na coluna salary
.
Se várias linhas tiverem o valor mínimo especificado, a função será não determinística.
Para retornar valores para várias linhas, especifique o argumento opcional maximum_number_of_values_to_return
. Com este argumento adicional:
A função retorna um ARRAY contendo os valores de uma coluna para as linhas com os valores mais baixos de uma coluna especificada.
Os valores na ARRAY são ordenados por seus valores correspondentes na coluna que contém os valores mínimos.
Se várias linhas tiverem esses valores mais baixos, a função será não determinística.
Por exemplo, MIN_BY(employee_id, salary, 5)
retorna uma ARRAY de valores da coluna employee_id
para as cinco linhas contendo os valores mais baixos da coluna salary
. Os IDs no ARRAY são ordenados pelos valores correspondentes na coluna salary
.
- Consulte também:
Sintaxe¶
MIN_BY( <col_to_return>, <col_containing_mininum> [ , <maximum_number_of_values_to_return> ] )
Argumentos¶
Obrigatório:
col_to_return
Coluna contendo o valor a ser retornado.
col_containing_mininum
Coluna contendo o valor mínimo.
Opcional:
maximum_number_of_values_to_return
Número inteiro constante especificando o número máximo de valores a retornar. Você deve especificar um número positivo. O número máximo que você pode especificar é
1000
.
Retornos¶
Se
maximum_number_of_values_to_return
não for especificado, a função retornará um valor do mesmo tipo quecol_to_return
.Se
maximum_number_of_values_to_return
for especificado, a função retorna um ARRAY contendo valores do mesmo tipo quecol_to_return
. Os valores na ARRAY são ordenados por seus valores correspondentescol_containing_mininum
.Por exemplo,
MIN_BY(employee_id, salary, 5)
retorna os IDs dos funcionários com os cinco salários mais baixos, ordenados porsalary
(em ordem crescente).
Notas de uso¶
A função ignora valores NULL em
col_containing_mininum
.Se todos os valores em
col_containing_mininum
forem NULL, a função retornará NULL (independentemente de o argumento opcionalmaximum_number_of_values_to_return
estar especificado).
Exemplos¶
Os exemplos a seguir demonstram como utilizar a função MIN_BY.
Para executar estes exemplos, execute as seguintes instruções para configurar a tabela e os dados para os exemplos:
CREATE OR REPLACE TABLE employees(employee_id NUMBER, department_id NUMBER, salary NUMBER);
INSERT INTO employees VALUES
(1001, 10, 10000),
(1020, 10, 9000),
(1030, 10, 8000),
(900, 20, 15000),
(2000, 20, NULL),
(2010, 20, 15000),
(2020, 20, 8000);
Execute a seguinte instrução para ver o conteúdo desta tabela:
SELECT * FROM employees;
+-------------+---------------+--------+
| EMPLOYEE_ID | DEPARTMENT_ID | SALARY |
|-------------+---------------+--------|
| 1001 | 10 | 10000 |
| 1020 | 10 | 9000 |
| 1030 | 10 | 8000 |
| 900 | 20 | 15000 |
| 2000 | 20 | NULL |
| 2010 | 20 | 15000 |
| 2020 | 20 | 8000 |
+-------------+---------------+--------+
O exemplo seguinte retorna o ID do funcionário com o salário mais baixo:
SELECT MIN_BY(employee_id, salary) FROM employees;
+-----------------------------+
| MIN_BY(EMPLOYEE_ID, SALARY) |
|-----------------------------|
| 1030 |
+-----------------------------+
Observe o seguinte:
Como mais de uma linha contém o valor mínimo da coluna
salary
, a função é não determinística e pode retornar o ID do funcionário para uma linha diferente em execuções subsequentes.A função ignora o valor NULL na coluna
salary
ao determinar as linhas com os valores mínimos.
O exemplo seguinte retorna uma ARRAY contendo os IDs dos funcionários com os três salários mais baixos:
SELECT MIN_BY(employee_id, salary, 3) FROM employees;
+--------------------------------+
| MIN_BY(EMPLOYEE_ID, SALARY, 3) |
|--------------------------------|
| [ |
| 1030, |
| 2020, |
| 1020 |
| ] |
+--------------------------------+
Como mostrado no exemplo, os valores na ARRAY são ordenados por seus valores correspondentes na coluna salary
. Assim, MIN_BY retorna os IDs de funcionários ordenados por seu salário em ordem crescente.
Se mais de uma dessas linhas tiver o mesmo valor na coluna salary
, a ordem dos valores retornados para esse salário é não determinística.