Каким образом можно эффективно формулировать SQL запросы?

Как выполнить следующие задания на сайте https://www.w3schools.com/sql/trysql.asp?filename=...:

7) Выведите название, стоимость и количество отпускаемых единиц продукции для каждого заказа, оформленного в августе.

8) Найдите самый дорогой заказ, оформленный в августе.

9) Найдите работника, оформившего самый дорогой заказ в августе.

Вот мои попытки, но они не работают почему-то:
7)
SELECT Orders.OrderID, Products.ProductName, OrderDetails.UnitPrice, OrderDetails.Quantity
FROM Orders
JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID
JOIN Products ON OrderDetails.ProductID = Products.ProductID
WHERE MONTH(Orders.OrderDate) = 8;

8)
SELECT TOP 1 Orders.OrderID, SUM(OrderDetails.UnitPrice * OrderDetails.Quantity) AS TotalCost
FROM Orders
JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID
WHERE MONTH(Orders.OrderDate) = 8
GROUP BY Orders.OrderID
ORDER BY TotalCost DESC;

9)
SELECT TOP 1 Employees.EmployeeID, Employees.FirstName, Employees.LastName
FROM Employees
JOIN Orders ON Employees.EmployeeID = Orders.EmployeeID
JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID
WHERE MONTH(Orders.OrderDate) = 8
GROUP BY Employees.EmployeeID, Employees.FirstName, Employees.LastName
ORDER BY SUM(OrderDetails.UnitPrice * OrderDetails.Quantity) DESC;

Буду благодарен за помощь, уже попробовал разные варианты.
  • 18 декабря 2023 г. 21:27
Ответы на вопрос 2
Ваши SQL запросы выглядят правильно, однако возможно есть проблема с данными на сайте w3schools. Чтобы эффективно формулировать SQL запросы, рекомендуется учитывать следующие рекомендации:

1) Используйте подходящие ключевые слова: SELECT, FROM, WHERE, JOIN, GROUP BY, ORDER BY и др. для создания структурированного запроса.

2) Оптимизируйте запросы: используйте индексы для ускорения работы запроса и избегайте использования функций, которые замедляют выполнение (например, функция MONTH).

3) Правильно используйте операторы JOIN: убедитесь, что вы правильно задаете условия соединения (например, ON Orders.OrderID = OrderDetails.OrderID).

4) Используйте функции агрегации, такие как SUM, для выполнения расчетов над данными (например, SUM(OrderDetails.UnitPrice * OrderDetails.Quantity) AS TotalCost).

5) Используйте ключевое слово TOP или LIMIT для ограничения количества выдаваемых строк (например, SELECT TOP 1 ...).

6) Проверьте, что таблицы и столбцы, которые вы используете в запросах, существуют и имеют правильные имена.

Если ваши запросы не работают на сайте w3schools, возможно, есть проблема с данными или интерфейсом сайта. Вы можете попробовать выполнить запросы на других платформах или с использованием другой базы данных для проверки их правильности.
Похоже что запросы у вас правильные,  и проблема с сервером на котором вы тестируете.
Похожие вопросы