Создадим таблицу для хранения оценок учеников.
CREATE TABLE marks
(
student TEXT COLLATE "ucs_basic",
mark INTEGER
);
Заполним таблицу данными.
INSERT INTO marks(student, mark) VALUES ('Maxim', 4);
INSERT INTO marks(student, mark) VALUES ('Maxim', 4);
INSERT INTO marks(student, mark) VALUES ('Maxim', 5);
INSERT INTO marks(student, mark) VALUES ('Alex', 3);
INSERT INTO marks(student, mark) VALUES ('Alex', 2);
INSERT INTO marks(student, mark) VALUES ('Piter', 4);
INSERT INTO marks(student, mark) VALUES ('Piter', 3);
Выведем информацию и среднюю оценку только тех учеников, у которых средняя оценка >= 3.
WITH middle_marks AS (SELECT student, AVG(mark) AS sredn FROM marks GROUP BY student)
SELECT * FROM middle_marks WHERE sredn >= 3;
Сначала создаётся временная таблица, в которой хранится информация о средней оценке каждого ученика.
Далее идёт выборка по условию из временной таблицы.