Перейти к основному содержимому

min_by

Описание

Возвращает значение x, связанное с минимальным значением y.

Например, SELECT min_by(subject, exam_result) FROM exam; возвращает предмет с наименьшим результатом экзамена.

Эта функция поддерживается начиная с версии 1.5.0.

Синтаксис

min_by(x,y)

Параметры

  • x: выражение любого типа.
  • y: выражение типа, который можно упорядочить.

Возвращаемое значение

Возвращает значение того же типа, что и x.

Примечания по использованию

  • y должен быть сортируемым типом. Если вы используете несортируемый тип y, такой как bitmap или hll, возвращается ошибка.
  • Если y содержит значение null, строка, соответствующая значению null, игнорируется.
  • Если более одного значения x имеет одинаковое минимальное значение y, эта функция возвращает первое встреченное значение x.

Примеры

  1. Создайте таблицу exam.

    CREATE TABLE exam (
    subject_id INT,
    subject STRING,
    exam_result INT
    ) DISTRIBUTED BY HASH(`subject_id`);
  2. Вставьте значения в эту таблицу и выполните запрос данных из этой таблицы.

    insert into exam values
    (1,'math',90),
    (2,'english',70),
    (3,'physics',95),
    (4,'chemistry',85),
    (5,'music',95),
    (6,'biology',null);

    select * from exam order by subject_id;
    +------------+-----------+-------------+
    | subject_id | subject | exam_result |
    +------------+-----------+-------------+
    | 1 | math | 90 |
    | 2 | english | 70 |
    | 3 | physics | 95 |
    | 4 | chemistry | 85 |
    | 5 | music | 95 |
    | 6 | biology | null |
    +------------+-----------+-------------+
    6 rows in set (0.03 sec)
  3. Получите предмет с наименьшим баллом. Возвращается предмет english с наименьшим баллом 70.

    SELECT min_by(subject, exam_result) FROM exam;
    +------------------------------+
    | min_by(subject, exam_result) |
    +------------------------------+
    | english |
    +------------------------------+
    1 row in set (0.01 sec)