MySQL. Значение в поле в записях поделить на максимальное значение этого поля

Всем привет. Подскажите пожалуйста как быть. Есть таблица, она у меня формируется после выборки, выглядит так:

Код выборки

введите сюда описание изображения

Результат:

введите сюда описание изображения

Нужно же получить вот такой результат

введите сюда описание изображения

Т.е. значение sumrunk делится на максимальное значение этого поля и сохраняется в поле rel

Пробовал так

введите сюда описание изображения

Ошибка Error Code: 1146. Table 'search_engine.t1' doesn't exist

Ну тут понятно, таблица t1 еще не создалась, а я уже максимум по полю ищу.

пробовал еще так:

введите сюда описание изображения

В результате выходит только первая запись

введите сюда описание изображения

Нашел пока только такое решение. Выборка сохраняется как таблица t1, находим в ней максимум по полю sumrunk. И потом еще раз делаю выборку создается таблица t2 и пробегаю по каждой записи.

введите сюда описание изображения

По тз создавать новые таблицы не рекомендовано, поэтому делаю через AS. Так то все работает. Но есть ли какое нибудь решение короче и компактнее?


Ответы (1 шт):

Автор решения: Akina

DEMO

Исходные данные:

CREATE TABLE test (page_id INT, `rank` INT);
INSERT INTO test VALUES
(1,1),(1,2),(1,3),(2,4),(2,5),(3,4),(3,3),(3,2);

Запрос:

SELECT page_id, 
       SUM(`rank`) / MAX(SUM(`rank`)) OVER () rel
FROM test
-- WHERE ...
GROUP BY page_id;

fiddle

→ Ссылка