PostgreSQL
  • Introduction
  • PostgreSQL
    • Введение
    • Установка и базовые операции
    • Запуск команд SQL из файла
    • Агрегатные функции
    • Реляционная алгебра
    • Создание счётчика
    • Изменение структуры таблицы
    • Диапазоны и множества
    • Регулярные выражения
    • Скрипты SQL
    • Группировка
    • Регистры строк
    • Уникальные поля
    • Сортировки и вычисляемые поля
    • Представления
    • Массивы и триггеры
    • Индексы и анализ
    • Текстовый анализ
    • Использование RETURNING
    • Возврат массива записей
    • Внешние ключи
    • Ускорение БД
    • Запросы WITH
    • JSON
Powered by GitBook
On this page

Was this helpful?

  1. PostgreSQL

Запросы WITH

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

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;

Сначала создаётся временная таблица, в которой хранится информация о средней оценке каждого ученика.

Далее идёт выборка по условию из временной таблицы.

PreviousУскорение БДNextJSON

Last updated 5 years ago

Was this helpful?