Группировка

Создадим таблицу для хранения оценок студентов.

CREATE TABLE marks (mark_id SERIAL PRIMARY KEY, mark_value INTEGER, name_of_student TEXT);

Заполним созданную таблицу

INSERT INTO marks (mark_value, name_of_student) VALUES (5, 'Maxim');
INSERT INTO marks (mark_value, name_of_student) VALUES (5, 'Maxim');
INSERT INTO marks (mark_value, name_of_student) VALUES (3, 'Maxim');
INSERT INTO marks (mark_value, name_of_student) VALUES (4, 'Maxim');
INSERT INTO marks (mark_value, name_of_student) VALUES (3, 'Nina');
INSERT INTO marks (mark_value, name_of_student) VALUES (2, 'Nina');
INSERT INTO marks (mark_value, name_of_student) VALUES (3, 'Nina');

Для каждого студента выведем его среднюю оценку.

Колонку с именем студента назовём student, а колонку со средней оценкой назовём middle_mark.

SELECT name_of_student AS student, AVG(mark_value) AS middle_mark FROM marks GROUP BY name_of_student;

Выведем средние оценки только тех студентов, у которых средняя оценка больше и равна четырём.

SELECT name_of_student AS student, AVG(mark_value) AS middle_mark FROM marks 
GROUP BY name_of_student HAVING AVG(mark_value) >= 4;

Last updated