Придумай задание для каждых пунктов и напиши запрос к каждому их них
1.Внутреннее соединение (10 запросов в комбинации с различными ви- дами условий)
2.Внешнее полное, левое и правое соединение (5 запросов)
3.Замыкание таблицы на саму себя (1 запрос, если невозможно сделать на вашей базе данных, то выполнить на «вымышленной»)
4.Подзапросы в части
Задание 1: Внутреннее соединение
1. Запрос: Вывести список всех студентов и их оценки по предмету "Математика".
SELECT students.name, grades.math_grade
FROM students
INNER JOIN grades ON students.id = grades.student_id
WHERE grades.subject = 'Математика';
2. Запрос: Вывести список всех книг и их авторов, у которых количество страниц больше 500.
SELECT books.title, authors.name
FROM books
INNER JOIN authors ON books.author_id = authors.id
WHERE books.pages > 500;
3. Запрос: Вывести список всех заказов и их статусы, сделанных клиентом с именем "Иванов".
SELECT orders.order_number, statuses.status
FROM orders
INNER JOIN statuses ON orders.status_id = statuses.id
INNER JOIN clients ON orders.client_id = clients.id
WHERE clients.name = 'Иванов';
4. Запрос: Вывести список всех фильмов и их режиссеров, выпущенных после 2010 года.
SELECT movies.title, directors.name
FROM movies
INNER JOIN directors ON movies.director_id = directors.id
WHERE movies.release_year > 2010;
5. Запрос: Вывести список всех продуктов и их цены, у которых количество на складе больше 10.
SELECT products.name, prices.price
FROM products
INNER JOIN prices ON products.id = prices.product_id
WHERE products.quantity > 10;
6. Запрос: Вывести список всех сотрудников и их должностей, работающих в отделе "Продажи".
SELECT employees.name, positions.position
FROM employees
INNER JOIN positions ON employees.position_id = positions.id
INNER JOIN departments ON employees.department_id = departments.id
WHERE departments.name = 'Продажи';
7. Запрос: Вывести список всех автомобилей и их владельцев, у которых год выпуска больше 2015.
SELECT cars.make, owners.name
FROM cars
INNER JOIN owners ON cars.owner_id = owners.id
WHERE cars.year > 2015;
8. Запрос: Вывести список всех задач и их статусов, принадлежащих проекту с названием "Web Development".
SELECT tasks.name, statuses.status
FROM tasks
INNER JOIN statuses ON tasks.status_id = statuses.id
INNER JOIN projects ON tasks.project_id = projects.id
WHERE projects.name = 'Web Development';
9. Запрос: Вывести список всех студентов и их преподавателей, у которых средний балл выше 4.5.
SELECT students.name, teachers.name
FROM students
INNER JOIN teachers ON students.teacher_id = teachers.id
INNER JOIN grades ON students.id = grades.student_id
GROUP BY students.name, teachers.name
HAVING AVG(grades.grade) > 4.5;
10. Запрос: Вывести список всех заказов и их клиентов, у которых сумма заказа больше 1000.
SELECT orders.order_number, clients.name
FROM orders
INNER JOIN clients ON orders.client_id = clients.id
WHERE orders.total_amount > 1000;
Задание 2: Внешнее полное, левое и правое соединение
1. Запрос: Вывести список всех студентов и их оценки по предмету "Математика", включая студентов без оценок.
SELECT students.name, grades.math_grade
FROM students
LEFT JOIN grades ON students.id = grades.student_id
WHERE grades.subject = 'Математика';
2. Запрос: Вывести список всех книг и их авторов, включая книги без авторов.
SELECT books.title, authors.name
FROM books
LEFT JOIN authors ON books.author_id = authors.id;
3. Запрос: Вывести список всех заказов и их статусы, включая заказы без статусов.
SELECT orders.order_number, statuses.status
FROM orders
RIGHT JOIN statuses ON orders.status_id = statuses.id;
4. Запрос: Вывести список всех фильмов и их режиссеров, включая фильмы без режиссеров.
SELECT movies.title, directors.name
FROM movies
LEFT JOIN directors ON movies.director_id = directors.id;
5. Запрос: Вывести список всех продуктов и их цены, включая продукты без цен.
SELECT products.name, prices.price
FROM products
RIGHT JOIN prices ON products.id = prices.product_id;
Задание 3: Замыкание таблицы на саму себя
1. Запрос: Вывести список всех сотрудников и их непосредственных руководителей.
SELECT employees.name, managers.name
FROM employees
INNER JOIN employees AS managers ON employees.manager_id = managers.id;
Задание 4: Подзапросы в части
1. Запрос: Вывести список всех студентов, у которых средний балл выше среднего по всем студентам.
SELECT name
FROM students
WHERE average_grade > (SELECT AVG(average_grade) FROM students);
2. Запрос: Вывести список всех книг, написанных авторами, у которых есть книги с количеством страниц больше 500.
SELECT title
FROM books
WHERE author_id IN (SELECT author_id FROM books WHERE pages > 500);
3. Запрос: Вывести список всех заказов, сделанных клиентами, у которых сумма заказа больше средней суммы заказов.
SELECT order_number
FROM orders
WHERE total_amount > (SELECT AVG(total_amount) FROM orders);
4. Запрос: Вывести список всех фильмов, выпущенных режиссерами, у которых есть фильмы с рейтингом выше 8.
SELECT title
FROM movies
WHERE director_id IN (SELECT director_id FROM movies WHERE rating > 8);
5. Запрос: Вывести список всех продуктов, у которых цена выше средней цены по всем продуктам.
SELECT name
FROM products
WHERE price > (SELECT AVG(price) FROM products);