PostgreSQL - поиск максимального значения столбца - PullRequest
0 голосов
/ 05 января 2019

Допустим, у меня была таблица, в которой отслеживались результаты тестов для студентов.

CREATE TABLE scores (
student_id SERIAL PRIMARY KEY,
name VARCHAR(100),
test1 INTEGER,
test2 INTEGER,
test3 INTEGER,
test4 INTEGER,
highest_score VARCHAR(50)
)

Если бы я хотел, чтобы в столбце наивысшего балла был указан тест # с наивысшим баллом (например, если бы баллами были тесты 1: 90, тест 2: 95, тест 3: 85, тест 4: 90, то в самом высоком_счете был бы указан тест 2), как Могу ли я рассчитать это? Можно ли все это сделать только на PostgreSQL? Или мне нужно рассчитать это на серверной части и отправить результат обратно в таблицу?

Я использую React на своем внешнем интерфейсе, а Node на своем внутреннем.

1 Ответ

0 голосов
/ 05 января 2019

Используйте выражение case:

update scores
set highest_score = case 
    when test1 = greatest(test1, test2, test3, test4) then 'test1'
    when test2 = greatest(test1, test2, test3, test4) then 'test2'
    when test3 = greatest(test1, test2, test3, test4) then 'test3'
    else 'test4'
end

Функция greatest() была введена в Postgres 8.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...