- 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_returnnão for especificado, a função retornará um valor do mesmo tipo que- col_to_return.
- Se - maximum_number_of_values_to_returnfor especificado, a função retorna um ARRAY contendo valores do mesmo tipo que- col_to_return. Os valores na ARRAY são ordenados por seus valores correspondentes- col_containing_mininum.- Por exemplo, - MIN_BY(employee_id, salary, 5)retorna os IDs dos funcionários com os cinco salários mais baixos, ordenados por- salary(em ordem crescente).
Notas de uso¶
- A função ignora valores NULL em - col_containing_mininum.
- Se todos os valores em - col_containing_mininumforem NULL, a função retornará NULL (independentemente de o argumento opcional- maximum_number_of_values_to_returnestar 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 - salaryao 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.
Consulte também Usando funções de agregação MIN_BY e MAX_BY.