Объясните механизм: почему имя, присвоенное вычисляемому столбцу в списке выбора, обычно недоступно при фильтрации строк в том же запросе?
База Hintsage
DML и запросы
SELECT, INSERT, UPDATE, DELETE, фильтрация, выражения и логический порядок выполнения запросов.
Практика
Вопросы: DML и запросы
В отчёте нужно исключить оплаченные заказы. Какие строки вернёт запрос, если столбец status допускает NULL?
WITH orders(id, status) AS (
VALUES (1, 'paid'), (2, 'pending'), (3, NULL)
)
SELECT id
FROM orders
WHERE NOT (status = 'paid');
В запросе с LEFT JOIN условие по столбцу правой таблицы перенесли из ON в WHERE: как изменился набор строк?
Для отчёта по группам продаж определите, где в логическом порядке SELECT должен применяться фильтр по агрегированной сумме.
В архив переносят заказы, но порядок столбцов в источнике отличается от порядка столбцов целевой таблицы. Как SQL сопоставит значения при таком INSERT?
CREATE TABLE archive (
order_id INTEGER,
total NUMERIC
);
CREATE TABLE source (
total NUMERIC,
order_id INTEGER
);
INSERT INTO archive
SELECT total, order_id
FROM source;
Какой результат даст фильтр, в котором без скобок смешаны AND и OR, и какое правило определяет его разбор?
Как SQL определяет значение пропущенного столбца при INSERT?
В отчёте строки иногда приходят в разном порядке при неизменном фильтре. Какое свойство SELECT это объясняет?
В UPDATE столбец одновременно участвует в условии отбора и новом значении: какие строки будут изменены?
Сравните поведение нескольких присваиваний в одном UPDATE: можно ли переносимо считать, что каждое следующее получает уже изменённое значение столбца?
В аналитическом запросе нужно отфильтровать строки по результату оконного вычисления. Почему обычная фильтрация строк не может напрямую использовать этот результат?
В скрипте очистки таблицы пропустили условие фильтрации. Какой набор строк затронет DELETE?
На каком этапе логического выполнения SELECT устраняются дубликаты при использовании DISTINCT?
В практическом запросе фильтр применяет функцию к индексированному столбцу: почему это часто мешает эффективно использовать обычный индекс?
В фильтре сначала проверяют, что делитель не равен нулю, а затем выполняют деление. Гарантирует ли SQL такой порядок вычисления условий?
Разберите последствие удаления родительской строки, на которую ссылаются дочерние строки через внешний ключ.
В таблицу загружают данные через запрос-источник, и в результате появляются одинаковые строки. Как SQL определяет, сколько строк будет вставлено?
В таблице несколько строк одного клиента; почему DISTINCT не выбирает среди них самую свежую?
Как отличить проверку столбца на NULL от сравнения его с NULL в условии отбора?
В запросе используется подзапрос в месте, где ожидается одно значение. Определите, что произойдёт при выполнении запроса и почему.
WITH prices(product_id, price) AS (
VALUES (1, 100), (1, 120)
)
SELECT
(SELECT price
FROM prices
WHERE product_id = 1) AS current_price;
Показано 1–20 из 50