Найти в Дзене
Налейте аналитику

Разбор задачи SQL №5

Продолжаем цикл статей с разбором задач из онлайн-тренажера. На очереди пятая задача. В SQL, помимо прочего, работают многие операторы, знакомые каждому школьнику с уроков информатики - SUM, COUNT, AVG, MIN/MAX, ROUND, ABS и прочие.
В пятой задаче нам как раз потребуется оператор COUNT для того, чтобы вывести количество рейсов, совершенных на TU-134. Для начала, как и в предыдущей задаче, найдем обозначение TU-134 в таблице Trip с помощью запроса SELECT * FROM Trip LIMIT 10. Никаких сюрпризов. Нужный нам самолет обозначен банально 'TU-134'. Нужно обратить внимание, что в задаче просят, чтобы результирующее поле носило имя count, что достигается использованием конструкции AS в блоке SELECT. Поэтому результирующий запрос будет таким:
SELECT COUNT(*) AS count FROM Trip WHERE plane = 'TU-134' Что еще важно отметить. COUNT(*) посчитает все строки в таблице с учетом заданных условий. При использовании простых запросов к одной таблице без JOIN-ов COUNT(*) можно использовать, не задумыва

Продолжаем цикл статей с разбором задач из онлайн-тренажера. На очереди пятая задача.

В SQL, помимо прочего, работают многие операторы, знакомые каждому школьнику с уроков информатики - SUM, COUNT, AVG, MIN/MAX, ROUND, ABS и прочие.

В пятой задаче нам как раз потребуется оператор COUNT для того, чтобы
вывести количество рейсов, совершенных на TU-134.

-2

Для начала, как и в предыдущей задаче, найдем обозначение TU-134 в таблице Trip с помощью запроса SELECT * FROM Trip LIMIT 10.

-3

Никаких сюрпризов. Нужный нам самолет обозначен банально 'TU-134'. Нужно обратить внимание, что в задаче просят, чтобы результирующее поле носило имя count, что достигается использованием конструкции AS в блоке SELECT. Поэтому результирующий запрос будет таким:

SELECT

COUNT(*) AS count

FROM Trip

WHERE

plane = 'TU-134'

-4

Что еще важно отметить. COUNT(*) посчитает все строки в таблице с учетом заданных условий. При использовании простых запросов к одной таблице без JOIN-ов COUNT(*) можно использовать, не задумываясь. Но если запрос сложный, происходит объединение и работа с несколькими таблицами, есть риск получить задвоенные/затроенные/заNенные цифры в ответе. Почему это может происходить коснемся в задаче, где появится первый JOIN.

Поэтому для надежности вычислений COUNT(*) можно замерить на COUNT(DISTINCT уникальный ключ), немного преобразовав запрос:

SELECT

COUNT(DISTINCT id) AS count

FROM Trip

WHERE

plane = 'TU-134'

-5

Спасибо за прочтение ) подписывайтесь на телеграм