- Kategorien:
Aggregationsfunktionen (Allgemein)
MIN_BY¶
Sucht die Zeilen, die den minimalen Wert einer Spalte enthalten, und gibt den Wert einer anderen Spalte in dieser Zeile zurück.
Wenn eine Tabelle beispielsweise die Spalten employee_id
und salary
enthält, gibt MIN_BY(employee_id, salary)
den Wert der Spalte employee_id
für die Zeile zurück, die den niedrigsten Wert in der Spalte salary
hat.
Wenn mehrere Zeilen den angegebenen Minimumwert enthalten, ist die Funktion nicht deterministisch.
Um Werte für mehrere Zeilen zurückzugeben, geben Sie das optionale Argument maximum_number_of_values_to_return
an. Mit diesem zusätzlichen Argument:
Die Funktion gibt ein ARRAY zurück, das die Werte einer Spalte für die Zeilen mit den höchsten Werten der angegebenen Spalte enthält.
Die Werte in ARRAY werden nach den entsprechenden Werten in der Spalte sortiert, die die Minimumwerte enthält.
Wenn mehrere Zeilen diese niedrigsten Werte enthalten, ist die Funktion nicht deterministisch.
Beispiel: MIN_BY(employee_id, salary, 5)
gibt ein ARRAY von Werten der Spalte employee_id
für die fünf Zeilen zurück, die die niedrigsten Werte der Spalte salary
enthalten. Die IDs in ARRAY werden nach den entsprechenden Werten der Spalte salary
sortiert.
- Siehe auch::
Syntax¶
MIN_BY( <col_to_return>, <col_containing_mininum> [ , <maximum_number_of_values_to_return> ] )
Argumente¶
Erforderlich:
col_to_return
Spalte, die den zurückzugebenden Wert enthält.
col_containing_mininum
Spalte, die den Mindestwert enthält.
Optional:
maximum_number_of_values_to_return
Konstante Ganzzahl (Integer), die die maximale Anzahl der zurückzugebenden Werte angibt. Sie müssen eine positive Zahl angeben. Die maximale Anzahl, die Sie angeben können, ist
1000
.
Rückgabewerte¶
Wenn
maximum_number_of_values_to_return
nicht angegeben wird, gibt die Funktion einen Wert desselben Typs wiecol_to_return
zurück.Wenn
maximum_number_of_values_to_return
angegeben wird, gibt die Funktion ein ARRAY zurück, das Werte desselben Typs wiecol_to_return
enthält. Die Werte in ARRAY sind nach ihren entsprechenden Werten fürcol_containing_mininum
sortiert.So gibt
MIN_BY(employee_id, salary, 5)
beispielsweise die IDs der Mitarbeiter mit den fünf niedrigsten Gehältern zurück, sortiert nachsalary
(in aufsteigender Reihenfolge).
Nutzungshinweise¶
Die Funktion ignoriert NULL-Werte in
col_containing_mininum
.Wenn in
col_containing_mininum
alle Werte NULL sind, gibt die Funktion NULL zurück (unabhängig davon, ob das optionale Argumentmaximum_number_of_values_to_return
angegeben ist).
Beispiele¶
In den folgenden Beispielen wird die Verwendung der Funktion MIN_BY() gezeigt.
Um diese Beispiele auszuführen, führen Sie die folgenden Anweisungen aus, um die Tabelle und die Daten für die Beispiele einzurichten:
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);
Führen Sie die folgende Anweisung aus, um den Inhalt dieser Tabelle anzuzeigen:
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 |
+-------------+---------------+--------+
Das folgende Beispiel gibt die ID des Mitarbeiters mit dem niedrigsten Gehalt zurück:
SELECT MIN_BY(employee_id, salary) FROM employees;
+-----------------------------+
| MIN_BY(EMPLOYEE_ID, SALARY) |
|-----------------------------|
| 1030 |
+-----------------------------+
Beachten Sie Folgendes:
Da mehr als eine Zeile den Minimumwert für die Spalte
salary
enthält, ist die Funktion nicht deterministisch und könnte bei späteren Ausführungen die Mitarbeiter-ID einer anderen Zeile zurückgeben.Die Funktion ignoriert den Wert NULL in der Spalte
salary
bei der Ermittlung der Zeilen mit den Minimumwerten.
Das folgende Beispiel gibt ein ARRAY zurück, das die IDs der Mitarbeiter mit den drei niedrigsten Gehältern enthält:
SELECT MIN_BY(employee_id, salary, 3) FROM employees;
+--------------------------------+
| MIN_BY(EMPLOYEE_ID, SALARY, 3) |
|--------------------------------|
| [ |
| 1030, |
| 2020, |
| 1020 |
| ] |
+--------------------------------+
Wie im Beispiel gezeigt, werden die Werte in der Spalte ARRAY nach ihren entsprechenden Werten in der Spalte salary
sortiert: So gibt MIN_BY die IDs der Mitarbeiter sortiert nach deren Gehalt in aufsteigender Reihenfolge zurück.
Wenn mehr als eine dieser Zeilen denselben Wert in der Spalte salary
enthält, ist die Reihenfolge der zurückgegebenen Werte für dieses Gehalt nicht deterministisch.