Найти в Дзене
Разбор задачи SQL №16 (с ошибкой)
Задача номер 16. Вывести отсортированный по количеству перелетов (по убыванию) и имени (по возрастанию) список пассажиров, совершивших хотя бы 1 полет. Задачка интересна тем, что в ней есть ошибка в онлайн-тренажере. Для начала - как бы я решал эту задачу. Запрос несложный, но... неправильный! SELECT p.name, COUNT(DISTINCT pit.trip) AS count FROM Pass_in_trip AS pit JOIN Passenger AS p ON p.id = pit.passenger GROUP BY p.id ORDER BY count DESC, p.name ASC В разборе задачи №5 я писал, что COUNT(DISTINCT id) лучше, чем COUNT(*), т...
1108 читали · 4 года назад
Разбор задачи SQL №13
В прошлый раз разбиралась десятая задача. В этот раз начнем разбирать тринадцатую, в которой познакомимся c элементом запроса HAVING. На мой взгляд, это первая задача, которая требует чуточку сообразительности. Задача - Вывести имена людей, у которых есть полный тёзка среди пассажиров. На самом деле, сообразительность нужна только для того, чтобы переформулировать постановку "Вывести имена людей, у которых есть полный тёзка среди пассажиров" в более понятную "Вывести name из таблицы Passenger, встречающиеся более 1 раза"...
1639 читали · 4 года назад
Разбор задачи SQL №10
В прошлой статье мы разобрали решение 6 задачи. Сейчас же перепрыгнем сразу на десятую, т.к. в 7, 8, и 9 нет ничего принципиально интересного или нового (разве что, в восьмой используется оператор для расчета разницы между двумя datetime-переменными TIMEDIFF(t.time_in, t.time_out) AS flight_time). Задача - Вывести вылеты, совершенные с 10 ч. по 14 ч. 1 января 1900 г. Задачка, казалось бы, пустяковая. Но хочу остановиться на одном моменте. По опыту проведения тестовых заданий, 7 из 10 человек в подобной задаче напишут запрос подобного вида: SELECT * FROM Trip AS t WHERE t...
1621 читали · 4 года назад
Разбор задачи SQL №6
В прошлый раз я затронул тему JOIN-ов. В шестой задаче тренажера нам впервые потребуется объединять таблицы. Задача - вывести названия (name) компаний, которые совершали полет на Boeing. Предполагаю, что если одна и та же компания летала на Boeing несколько раз, нам достаточно вывести ее название единожды. Другими словами, требуется список из уникальных имен компаний, значит, в запросе будет фигурировать DISTINCT: SELECT DISTINCT c.name FROM Trip AS t JOIN Company AS c ON t.company = c...
4226 читали · 4 года назад
Поговорим о JOIN-ах
Оператор JOIN в SQL используется для объединения таблиц и получения результатов запроса из нескольких таблиц разом. Синтаксис запроса с участием JOIN-а двух таблиц, а также различные виды JOIN-ов можно увидеть на схеме: Что надо помнить, изучая подобное Эйлеровское представление оператора JOIN? 1. Во-первых, учить все виды JOIN-ов, может, необходимо для экзамена в университете, но для решения реальных задач не нужно. 95% задач на практике решается с использованием INNER JOIN и LEFT JOIN, и уж поверьте,...
571 читали · 4 года назад
Если нравится — подпишитесь
Так вы не пропустите новые публикации этого канала