Какой результат выдаст SQL‑запрос с оператором JOIN
Запрос сначала нужно исправить: UserName неоднозначен, поскольку есть в обеих таблицах. SELECT u.UserName вернёт четыре строки: xxx дважды, yyy и zzz по одному разу.
Читать ответПодготовка к интервью
Разбирайте реальные вопросы, сверяйтесь с подробными ответами и готовьтесь по технологиям и компаниям.
Проверьте, насколько резюме подходит выбранной позиции, и получите рекомендации по улучшению.
Каталог
Запрос сначала нужно исправить: UserName неоднозначен, поскольку есть в обеих таблицах. SELECT u.UserName вернёт четыре строки: xxx дважды, yyy и zzz по одному разу.
Читать ответМаксимальную зарплату найдите подзапросом MAX, связав сотрудника с отделом. Для средней зарплаты сгруппируйте сотрудников по отделу и используйте HAVING.
Читать ответПокажите понимание на небольшом примере: JOIN связывает строки, GROUP BY образует группы, а агрегаты вычисляют показатели для них. Особенно важно учитывать размножение строк при соединениях.
Читать ответMVCC позволяет транзакциям читать подходящие версии строк, уменьшая конфликты чтения и записи. VACUUM освобождает место от версий, больше не нужных ни одной транзакции.
Читать ответORDER BY задаёт сортировку результата, HAVING фильтрует группы после группировки. Индексы могут ускорять чтение и сортировку, но занимают место и удорожают изменения данных.
Читать ответГруппировка по D.Id и D.Name различает сущности с одинаковыми именами. Если оставить только имя, их строки и агрегаты могут объединиться; если Id остаётся в SELECT, запрос также может стать недопустимым.
Читать ответPostgreSQL поддерживает B-tree, Hash, GiST, SP-GiST, GIN и BRIN. B-tree применим к равенству и диапазонам, Hash — к равенству. CLUSTER физически переупорядочивает таблицу, но не поддерживает этот порядок постоянно.
Читать ответВыбор между PostgreSQL и специализированным хранилищем временных рядов зависит от потока записей, срока хранения, запросов и требований к транзакциям. Для умеренной нагрузки обычного PostgreSQL может быть достаточно.
Читать ответВ PostgreSQL B-tree подходит для равенства, диапазонов и сортировки, а GIN — для поиска элементов составного значения, в том числе лексем tsvector. Для полнотекстового поиска обычно выбирают GIN.
Читать ответИспользуйте NOT EXISTS с проверкой материалов по work_id. Он возвращает работы, для которых не найдено ни одной связанной строки, и не страдает от NULL в несвязанных материалах.
Читать ответИспользуйте ORDER BY quantity DESC для убывания и ORDER BY quantity ASC для возрастания. Дополнительный id задаёт устойчивый порядок строк с одинаковым количеством.
Читать ответПосчитайте частоту каждого name и оставьте строки с частотой 1. DISTINCT здесь не подходит: он убирает повторы, а не исключает все строки повторяющихся имён.
Читать ответ