Страница 1 из 1

Максимальное из среднего

Добавлено: 01 фев 2006, 13:28
avenger
Здравствуйте уважаемые программисты!

Пусть есть таблица с 3-мя полями номер записи, номер юзера, балл (1..10):
ID, UserID, BALL - все Integer.

Есть N-е количество записей. Количество записей на каждого Юзера > 100.

Как выбрать максимальное из среднего BALL. Сейчас я делаю это так:

Код: Выделить всё

SELECT FIRST 1 
    CAST((AVG(BALL*100)) AS FLOAT)/100
FROM
    ###
GROUP BY
    UserID
ORDER BY 1 DESC
Может быть есть более красивое решение?

С уважением, Иван.

Добавлено: 01 фев 2006, 14:22
Merlin
Может и есть. Если знать версию сервера.

Добавлено: 01 фев 2006, 14:23
avenger
Merlin писал(а):Может и есть. Если знать версию сервера.
Firebird 1.5.2

Добавлено: 01 фев 2006, 14:57
Merlin
Вьюха с AVG-ами и Select Max из неё. При простом обращении быстрее не будет, но в сложных запросах с необходимостью такой информации можно джойнить, в отличие от First, который подразумевает подзапрос. На FB2 - Select From Select

Добавлено: 01 фев 2006, 14:57
kdv
Если надо max из всех, то да, ты делаешь правильно. сортировкой desc получаешь максимальное из всех средних. В FB 2 можно навертеть select max на этот запрос, но красивым я бы это решение не назвал.

Вообще в проектировании и разработке "красивых" решений быть не должно. Должны быть практичные и производительные. Красоту оставь поэтам, художникам, и скульпторам.