Пантелеймон Альбертович
Ученик
(105)
2 месяца назад
1Созд базу данных Учет_студентов, добавьте табл Студенты и Группы с полями для идентификаторов, имен и дат рождения
-Создание базы данных Учет_студентов
CREATE DATABASE Учет_студентов;
-Использование базы данных
USE Учет_студентов;
-Создание таблицы Группы
CREATE TABLE Группы (
id INT PRIMARY KEY AUTO_INCREMENT,
название_группы VARCHAR(50) NOT NULL
);
-Создание таблицы Студенты
CREATE TABLE Студенты (
id INT PRIMARY KEY AUTO_INCREMENT,
имя VARCHAR(50) NOT NULL,
дата_рождения DATE NOT NULL,
группа_id INT,
FOREIGN KEY (группа_id) REFERENCES Группы(id)
);
-Создание таблицы Оценки (дополнительная таблица для хранения оценок студентов)
CREATE TABLE Оценки (
id INT PRIMARY KEY AUTO_INCREMENT,
студент_id INT,
оценка DECIMAL(3, 1),
FOREIGN KEY (студент_id) REFERENCES Студенты(id)
);
Доп-ое условие по вар-ам
Вар1.Необходимо написать запрос для вычисления ср знач оценок для студентов
SELECT
Студенты.иd,
Студенты.имя,
AVG(Оценки.оценка) AS средняя_оценка
FROM
Студенты
JOIN
Оценки ON Студенты.иd = Оценки.студент_id
GROUP BY
Студенты.иd;
Вар2.Необходимо написать запрос для получения списка студентов, которые имеют оценки выше 4.0 по всем предметам
SELECT
Студенты.иd,
Студенты.имя
FROM
Студенты
WHERE
NOT EXISTS (
SELECT 1
FROM Оценки
WHERE Оценки.студент_id = Студенты.иd AND Оценки.оценка <= 4.0
);
Вар3 Скоро предстоит зачет по дисциплине, необходимо вычислить кто из студентов не допущен до экза. Необходимо написать запрос для вычисл ср знач оценок. Балл ниже 3.3 не допущ
SELECT
Студенты.иd,
Студенты.имя,
AVG(Оценки.оценка) AS средняя_оценка
FROM
Студенты
JOIN
Оценки ON Студенты.иd = Оценки.студент_id
GROUP BY
Студенты.иd
HAVING
средняя_оценка < 3.3;
Вар4.Необходимо написать запрос для получ списка студентов, у которых ср оценка выше 4.0
SELECT
Студенты.иd,
Студенты.имя,
AVG(Оценки.оценка) AS средняя_оценка
FROM
Студенты
JOIN
Оценки ON Студенты.иd = Оценки.студент_id
GROUP BY
Студенты.иd
HAVING
средняя_оценка > 4.0;
Вар5.Необходимо написать запрос для получ списка студентов, которые не имеют ни одной оценки
SELECT
Студенты.иd,
Студенты.имя
FROM
Студенты
LEFT JOIN
Оценки ON Студенты.иd = Оценки.студент_id
WHERE
Оценки.иd IS NULL;
Вар6.Необходимо написать запрос для получ списка групп и кол-ва студентов в каждой группе
SELECT
Группы.название_группы,
COUNT(Студенты.иd) AS количество_студентов
FROM
Группы
LEFT JOIN
Студенты ON Группы.иd = Студенты.группа_id
GROUP BY
Группы.иd;
Вар7.Необходимо напис запрос для получ студентов, у которых ср оценка находится в диапазоне от 3.0 до 4.0
SELECT
Студенты.иd,
Студенты.имя,
AVG(Оценки.оценка) AS средняя_оценка
FROM
Студенты
JOIN
Оценки ON Студенты.иd = Оценки.студент_id
GROUP BY
Студенты.иd
HAVING
средняя_оценка BETWEEN 3.0 AND 4.0;
Вар8 Необходимо написать запрос для получ списка студентов, которые родились после опр-ной даты (например, '2001-01-01')
SELECT
Студенты.иd,
Студенты.имя,
Студенты.дата_рождения
FROM
Студенты
WHERE
Студенты.дата_рождения > '2001-01-01';
Вар9 Необходимо написать запрос для получ студентов, у которых есть хотя бы 1 оценка ниже 2.0
SELECT DISTINCT
Студенты.иd,
Студенты.имя
FROM
Студенты
JOIN
Оценки ON Студенты.иd = Оценки.студент_id
WHERE
Оценки.оценка < 2.0;
Вар10.Необходимо написать запрос для получ списка студентов, отсорт-ных по успеваемости
SELECT
Студенты.иd,
Студенты.имя,
AVG(Оценки.оценка) AS средняя_оценка
FROM
Студенты
JOIN
Оценки ON Студенты.иd = Оценки.студент_id
GROUP BY
Студенты.иd
ORDER BY
средняя_оценка DESC;
Пантелеймон АльбертовичУченик (105)
2 месяца назад
2.Созд базу данных Учет_клиентов, добавьте табл Клиенты и Заказы с полями для иден-ов, имен клиентов и дат заказов
-Создание базы данных Учет_клиентов
CREATE DATABASE Учет_клиентов;
-Использование базы данных
USE Учет_клиентов;
-Создание таблицы Клиенты
CREATE TABLE Клиенты (
id INT PRIMARY KEY AUTO_INCREMENT,
имя VARCHAR(50) NOT NULL
);
-Создание таблицы Заказы
CREATE TABLE Заказы (
id INT PRIMARY KEY AUTO_INCREMENT,
клиент_id INT,
дата_заказа DATE NOT NULL,
сумма DECIMAL(10, 2),
FOREIGN KEY (клиент_id) REFERENCES Клиенты(id)
);
Доп условие по вар-ам
Вар1.Необх напис запрос для получ всех заказов, сделанных опр клиентом напр, по имени
SELECT
Заказы.*
FROM
Заказы
JOIN
Клиенты ON Заказы.клиент_id = Клиенты.иd
WHERE
Клиенты.имя = 'Имя_клиента';
Пантелеймон АльбертовичУченик (105)
2 месяца назад
Вар2.Необходимо написать запрос для получения количества заказов, сделанных каждым клиентом.
SELECT
Клиенты.имя,
COUNT(Заказы.иd) AS количество_заказов
FROM
Клиенты
LEFT JOIN
Заказы ON Клиенты.иd = Заказы.клиент_id
GROUP BY
Клиенты.иd;
Вар3.Необходимо написать запрос для получения списка клиентов и дат их последних заказов
SELECT
Клиенты.имя,
MAX(Заказы.дата_заказа) AS последний_заказ
FROM
Клиенты
LEFT JOIN
Заказы ON Клиенты.иd = Заказы.клиент_id
GROUP BY
Клиенты.иd;
Вар4.Необходимо написать запрос для получения всех заказов, сделанных в определенный период (например, с 1 января 2024 года по 31 декабря 2024 года)
SELECT
*
FROM
Заказы
WHERE
дата_заказа BETWEEN '2024-01-01' AND '2024-12-31';
Пантелеймон АльбертовичУченик (105)
2 месяца назад
Вариант 5. Необходимо написать запрос для получения списка клиентов, у которых нет заказов.
SELECT
Клиенты.имя
FROM
Клиенты
LEFT JOIN
Заказы ON Клиенты.иd = Заказы.клиент_id
WHERE
Заказы.иd IS NULL;
Вариант 6. Необходимо написать запрос для получения списка всех клиентов, отсортированных по имени в алфавитном порядке.
SELECT
Клиенты.имя
FROM
Клиенты
ORDER BY
Клиенты.имя ASC;
Вариант 7. Необходимо написать запрос для получения клиентов, у которых средняя сумма заказов превышает определенное значение (например, 1000).
SELECT
Клиенты.имя,
AVG(Заказы.сумма) AS средняя_сумма
FROM
Клиенты
JOIN
Заказы ON Клиенты.иd = Заказы.клиент_id
GROUP BY
Клиенты.иd
HAVING
средняя_сумма > 1000;
Пантелеймон АльбертовичУченик (105)
2 месяца назад
Вариант 8. Необходимо написать запрос для получения списка клиентов и количества их заказов, отсортированных по количеству заказов в порядке убывания.
SELECT
Клиенты.имя,
COUNT(Заказы.иd) AS количество_заказов
FROM
Клиенты
LEFT JOIN
Заказы ON Клиенты.иd = Заказы.клиент_id
GROUP BY
Клиенты.иd
ORDER BY
количество_заказов DESC;
Вариант 9. Необходимо написать запрос для получения всех клиентов, которые сделали заказы в последние 30 дней.
SELECT DISTINCT
Клиенты.имя
FROM
Клиенты
JOIN
Заказы ON Клиенты.иd = Заказы.клиент_id
WHERE
Заказы.дата_заказа >= NOW() - INTERVAL 30 DAY;