от их оценки
Таблица с абитуриентами
CREATE TABLE enrollee(
id SERIAL NOT NULL UNIQUE,
code TEXT NOT NULL UNIQUE,
password TEXT NOT NULL,
"Фамилия Имя" TEXT NOT NULL,
"Украинский" INTEGER,
"Математика" INTEGER,
"Аттестация" FLOAT NOT NULL,
"Курсы(Украинский)" INTEGER,
"Курсы(Математика)" INTEGER,
score FLOAT
);
INSERT INTO enrollee(code, password, "Фамилия Имя", "Украинский", "Математика", "Аттестация", "Курсы(Украинский)", "Курсы(Математика)")
VALUES ('0000', 'JQkAcQ64FWZD', 'Иванов Артем', 143, 170, 9.1, 0, 0),
('0001', 'M4A0iCEydl8b', 'Смирнов Александр', 131, 164, 8.7, 12, 8),
('0002', 'aZYSRF2Orsy9', 'Кузнецов Михаил', 142, 153, 7.3, 0, 0);
И сам запрос
do $$
declare
i integer;
j float;
begin
for i in SELECT id FROM enrollee
loop
SELECT INTO j "Украинский" + "Математика" + "Аттестация" + "Курсы(Украинский)" + "Курсы(Математика)"
FROM enrollee
WHERE id = i;
UPDATE enrollee SET score = j
WHERE id = i;
end loop;
end; $$;
SELECT "Фамилия Имя", "Украинский", "Математика", "Аттестация", "Курсы(Украинский)", "Курсы(Математика)"
FROM enrollee
ORDER BY score DESC;
Вопрос можно ли сделать проще ?
Ах, да, ответ на вопрос: Можно.
Даже не применяя циклы ?
Спасибо это всё что я хотел знать значит нужно действительно ещё подучить основы
Вряд ли у вас больше нескольких тысяч абитуриентов, что мешает прям в запросе то подсчитать score?
Вероятно, знание SQL на уровне "миддл показал одну форму с CRUD".
SELECT "Фамилия Имя", "Украинский", "Математика", "Аттестация", "Курсы(Украинский)", "Курсы(Математика)" FROM enrollee ORDER BY ( SELECT "Украинский" + "Математика" + "Аттестация" + "Курсы(Украинский)" + "Курсы(Математика)" FROM enrollee ) DESC; Но это работать не будет
Мда, толко там select не нужен
Обсуждают сегодня