А вот и вторая часть из 50 вопросов по SQL с примером кода. Если вы еще не проверили мою часть I, пожалуйста, проверьте здесь.

Здесь я также представил инструкции создания и вставки, чтобы вы могли протестировать запросы. Вы можете создавать свои собственные операторы вставки, добавляя новые значения или изменяя даты соответствующим образом. Давайте начнем.

  1. Общая сумма продаж. Напишите 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
);