@QA-engineer

Почему мои SQL запросы неправильные?

Исходные данные для заданий ниже

Ты тестируешь сервис, который доставляет еду за 30 минут. Пока это маленький стартап, поэтому ты работаешь всего с четырьмя таблицами:

Orders — все доставленные заказы;
ORDERS_ID — ID заказов, int;
USER_ID — ID пользователей, int;
EMPLOYEE_ID — ID сотрудников, int;
DELIVERY_TIME — время доставки в минутах, int;
ITEMS — список товаров, char;

Users — пользователи;
USER_ID — ID пользователей, int;
FULL_NAME — полное ФИО пользователя, char;
PHONE — номер телефона пользователя, char;
ADDRESS — адрес пользователя, char;

Employees — работники;
EMPLOYEE_ID — ID сотрудника, int;
FIRST_NAME —имя сотрудника, char;
LAST_NAME — фамилия сотрудника, char;
PHONE — телефон сотрудника, char;
JOB_ID — ID специализации, int;

Jobs — типы работ в сервисе
JOB_ID — ID специализации, int;
JOB_TYPE — тип специализации, char;
HOURS — число рабочих часов в неделю, int;
SALARY — зарплата сотрудника с данной специализацией в рублях, int;

60634423972ac465697825.jpeg

==================================================================================================
1 - ЗАДАНИЕ
В службу поддержки пришло много жалоб: заказы, в которых есть гречка, доставляют почти час, хотя сервис обещает успеть в 30 минут.

Проверь, действительно ли курьеры опаздывают. Выбери все заказы, где есть хотя бы один товар - «гречка» и время доставки свыше 30 минут. В результирующей таблице должны быть ID заказов и ID курьеров.

Мой вариант ответа:

SELECT
ORDERS_ID,
EMPLOYEE_ID


FROM
orders

WHERE
ORDERS_ID = 'гречка' AND DELIVERY_TIME > 30;
=======================================================================================================
2 - ЗАДАНИЕ
Менеджер предложил добавить новую функциональность в продукт: мониторинг, который показывает самых активных клиентов за всё время работы компании.

Проверь, что список пользователей корректно выводится на экран. На этом этапе разработки достаточно проверить только ID клиентов.

Выбери пять самых активных клиентов по количеству заказов.

В результирующую таблицу выведи ID каждого пользователя и число заказов.

Отсортируй данные по убыванию числа заказов, выбери пять самых активных клиентов.

В ответе приложи SQL-запрос.

МОЙ ВАРИАНТ ОТВЕТА:

SELECT
Users.USER_ID,
COUNT(Orders.ORDERS_ID) as orders_id

FROM Users
INNER JOIN Orders ON Orders.ORDERS_ID = Users.USER_ID

ORDER BY (orders_id) DESC

LIMIT 5

===================================================================================================
3 - ЗАДАНИЕ
Из бухгалтерии пришёл баг-репорт: зарплаты сотрудников рассчитываются некорректно. Оказалось, что почти все ошибки в расчётах — в расчётных листах менеджеров.

Выведи список ID всех сотрудников, у которых в специализации содержится «менеджер», с зарплатой больше 70 000 рублей.

В ответе приложи SQL-запрос.

Мой варинта ответа:

SELECT
Employees.EMPLOYEE_ID

FROM Employees
INNER JOIN Jobs ON Jobs.SALARY = Employees.EMPLOYEE_ID

WHERE EMPLOYEE_ID = 'менеджер' AND SALARY > 70 000
  • Вопрос задан
  • 7101 просмотр
Решения вопроса 1
@Vitsliputsli
1. Вы пишите ORDERS_ID = 'гречка', по ТЗ "ORDERS_ID — ID заказов, int;"
2. Вы пишите Orders.ORDERS_ID = Users.USER_ID, по ТЗ "ORDERS_ID — ID заказов, int; USER_ID — ID пользователей, int;", т.е. совсем разные вещи, нет смысла по ним соединять таблицы.
3. Вы пишите EMPLOYEE_ID = 'менеджер', по ТЗ "EMPLOYEE_ID — ID сотрудника, int;"

Разберитесь, что такое ID в базе данных, как создаются связи. Создайте базу по указанным условиям, и на ней делайте попытки.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
BorLaze
@BorLaze
Java developer
Почему мои SQL запросы неправильные?

Потому что тут нет SQL запросов.

Тут мешанина служебных слов SQL и полей таблиц, собранных воедино без малейшего понимания сути.

ORDERS_ID = 'гречка'
Orders.ORDERS_ID = Users.USER_ID
Jobs.SALARY = Employees.EMPLOYEE_ID


Действительно, что тут может быть не так?..
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы