Для отчёта по регистрациям нужны только идентификатор пользователя user_id и дата signup_at из таблицы пользователей. Какой запрос лучше соответствует задаче и не тянет лишние поля?
A
SELECT user_id, signup_at FROM users ORDER BY signup_at DESCB
SELECT * FROM users ORDER BY user_id ASCC
SELECT signup_at FROM users WHERE signup_at IS NOT NULLD
SELECT user_id, signup_at FROM users WHERE signup_at IS NULLПравильный ответ. Лучше выбирать только нужные столбцы: это упрощает дальнейшую работу и снижает риск лишней выгрузки данных.
Разбор
SELECT * вытаскивает все столбцы, что часто приводит к лишнему объёму данных в выгрузке и может случайно утащить поля, которые не нужны для аналитики. Если для отчёта требуются только user_id и signup_at, то точнее и безопаснее SELECT user_id, signup_at FROM users. Вариант только с signup_at теряет идентификатор и не годится для отчёта по регистрациям. А WHERE signup_at IS NULL меняет смысл выборки и оставит только строки с пропущенной датой.
Проверь себя · 1/3разбор после ответа
В таблице
support_tickets поле resolved_at равно NULL, если тикет ещё не решён. Нужно вывести сначала нерешённые тикеты, а внутри них — по created_at по возрастанию (самые старые сверху). Какой ORDER BY подойдёт лучше всего?Ещё вопросы по теме «Основы SQL-запросов»
- В таблице `users` нужно выбрать только активных пользователей из России или Казахстана. Какой `WHERE` соответствует требованию?
- Нужно получить 20 самых новых событий из таблицы `events` (по времени `event_time`) и показать их в выдаче сверху. Какой запрос верный?
- Вы строите выдачу «последние заказы» и используете `LIMIT 50`. Поле `created_at` не уникально (много заказов в одну секунду). Какой `ORDER BY` лучше, чтобы порядок был детерминированным?
- Что можно корректно утверждать про результат запроса `SELECT user_id FROM users LIMIT 10`, если в нём нет `ORDER BY`?
- Нужно показать третью страницу каталога товаров: по 20 товаров на страницу, сортировка по цене по возрастанию. Какой запрос корректный?
- Все вопросы по «Основы SQL-запросов» →