А вот и вторая часть из 50 вопросов по SQL с примером кода. Если вы еще не проверили мою часть I, пожалуйста, проверьте здесь.
Здесь я также представил инструкции создания и вставки, чтобы вы могли протестировать запросы. Вы можете создавать свои собственные операторы вставки, добавляя новые значения или изменяя даты соответствующим образом. Давайте начнем.
- Общая сумма продаж. Напишите SQL-запрос, чтобы найти общую сумму продаж для каждого продукта в таблице «продажи».
Отвечать:
SELECT product_id, SUM(sales_amount) AS total_sales FROM sales GROUP BY product_id;
Вставьте операторы для тестовых данных:
CREATE TABLE sales ( sale_id INT PRIMARY KEY, product_id INT, sales_amount DECIMAL(10, 2) ); INSERT INTO sales (sale_id, product_id, sales_amount) VALUES (1, 101, 500.50), (2, 102, 800.25), (3, 103, 350.75), (4, 101, 200.00), (5, 102, 300.90);
2. Нанятые сотрудники. Как узнать количество нанятых сотрудников каждый год в таблице «сотрудники»?
Отвечать:
SELECT YEAR(hire_date) AS hire_year, COUNT(*) AS hire_count FROM employees GROUP BY YEAR(hire_date);
Вставьте операторы для тестовых данных:
-- Assuming the "employees" table from a previous question already exists INSERT INTO employees (employee_id, first_name, last_name, hire_date, salary) VALUES (6, 'Sarah', 'Williams', '2022-02-15', 58000), (7, 'James', 'Anderson', '2021-05-10', 62000), (8, 'Olivia', 'Taylor', '2023-01-28', 53000), (9, 'Ethan', 'Martin', '2023-06-12', 56000), (10, 'Sophia', 'Harris', '2022-09-20', 57000);
3. Заказы, размещенные клиентами: напишите запрос SQL, чтобы получить имена клиентов, разместивших заказы во все дни недели (с понедельника по пятницу).
Отвечать:
SELECT customer_name FROM customers WHERE customer_id IN ( SELECT DISTINCT customer_id FROM orders WHERE DATEPART(WEEKDAY, order_date) BETWEEN 2 AND 6 GROUP BY customer_id HAVING COUNT(DISTINCT DATEPART(WEEKDAY, order_date)) = 5 );