Оператор SELECT для новичка
Подскажите пожалуйста, возможно существует еще одно решение. Итак, есть таблица "users" (имя, фамилия, дата рождения и вес). Необходимо вывести имя и максимальный вес человека, который был рожден начиная с 1 января 2000 года. При этом указать название столбца "Наибольший вес"
вариант 1: выводит только вес, но хотелось бы чтоб еще и имя;
SELECT MAX(weight_kg) AS "Наибольший вес" FROM users WHERE date_of_birth > "1999-12-31";
вариант 2: выдает наибольший вес, но имя самого первого пользователя, что неверно;
SELECT MAX(weight_kg) AS "Наибольший вес", firstname FROM users WHERE date_of_birth > "1999-12-31";
вариант 3: выдает верный результат, но есть ли другой способ ?
SELECT weight_kg AS "Наибольший вес", firstname FROM users WHERE date_of_birth > "1999-12-31" GROUP BY firstname ORDER BY weight_kg DESC LIMIT 1;
Заранее всем спасибо :)
Ответы (1 шт):
Способ упомянутый в комментариях
Тут псевдокод, подправьте на нужные значения
SELECT column, column_max_value
FROM your_table
WHERE column_max_value =(SELECT MAX(column_max_value) FROM your_table)
AND dates > YYYY-MM-DD;
Такой запрос возвращает все строки (если такие имеются) с максимальным значением. Следовательно можно дописать сортировку по имени и вытаскивать самого тяжелого и первого по алфавиту
Субъективный комментарий на размышление
Мне все-таки кажется, что указанный способ ТС будет лучше по двум причинам:
- Понятный запрос и логика без ветвлений
- БД же может индексировать максимальное значение и если таковое единично, то оно много быстрее будет отрабатывать, если необходимо забирать только первую строку. Здесь сомнения, поправьте, те, кто погружен в тему индексации БД