Не совсем правильно, что значения из списка SELECT
запрещены в следующих пунктах. Фактически, ORDER BY
логически обрабатывается после списка SELECT
и может ссылаться на имена результатов списка SELECT
(в отличие от GROUP BY
). Таким образом, нормальный способ написать ваш запрос будет
SELECT t.client_id, max(t.points) AS "max"
FROM sessions
GROUP BY t.client_id
ORDER BY max;
Этот способ выразить это SQL-92 и должен быть очень переносимым. Другой способ сделать это - по номеру столбца, например,
ORDER BY 2;
Это единственный способ сделать это в SQL-92.
SQL: 1999 и более поздние версии также позволяют ссылаться на произвольные выражения в списке сортировки, так что вы можете просто сделать ORDER BY max(t.points)
, но это явно более громоздко и, возможно, менее переносимо. Упорядочение по номеру столбца было удалено в SQL: 1999, поэтому технически оно больше не является стандартным, но, вероятно, все еще широко поддерживается.