SQL запрос, mysql

195
23 апреля 2022, 15:20

Есть база данных, две таблицы, группы и студенты. Нужно написать запрос , который должен вывести все группы в которых есть хотя бы 3 студента со средним баллом 3.5 и выше. Дошел до момента соединения таблиц, понимаю как посчитать количество таких студентов, но не знаю, как посчитать сколько таких студентов конкретно в КАЖДОЙ группе

CREATE TABLE IF NOT EXISTS Groupp (
Gr_ID INT NOT NULL,
Gr_Name VARCHAR(20) NOT NULL,
Gr_St_Quant INT NOT NULL,
PRIMARY KEY (Gr_ID));
CREATE TABLE IF NOT EXISTS Students (
St_ID INT NOT NULL,
Gr_ID INT NOT NULL,
St_Name VARCHAR(40) NOT NULL,
Avg_Mark DOUBLE NOT NULL,
PRIMARY KEY (St_ID),
FOREIGN KEY (Gr_ID) REFERENCES Groupp(Gr_ID) ON DELETE CASCADE ON UPDATE CASCADE);
insert into Groupp(Gr_ID, Gr_Name, Gr_St_Quant) values (1,'4030M',15), (2, '4031M',20), (3, '4032M',25);
insert into Students(St_ID, Gr_ID, St_Name, Avg_Mark) values (1, 1, 'Andreev', 4.6),
(2, 1, 'Olegov', 4.6),
(3, 1, 'Ivanov', 4.2),
(4, 1, 'Petrov', 4.9),
(5, 1, 'Sidorov', 3.3),
(6, 2, 'Igorev', 3.1),
(7, 2, 'Filatov', 4.6),
(8, 2, 'Rybakov', 4.6),
(9, 2, 'Konovalov', 4.6),
(10, 2, 'Aleksandrova', 4.7),
(11, 3, 'Malikova', 4.8),
(12, 3, 'Popova', 4.8),
(13, 3, 'Chizkov', 2.9),
(14, 3, 'Vorobiev', 3.1),
(15, 3, 'Galushkin', 3.2);
Select distinct Gr_Name from Groupp G join Students S on G.Gr_ID = S.Gr_ID
where Avg_Mark >= 3.5 ```
Answer 1

Используйте GROUP BY + HAVING.

Если нужны только id групп, то так:

select S.Gr_ID
from Students S
WHERE Avg_Mark >= 3.5
GROUP BY S.Gr_ID
HAVING count(Gr_ID) >= 3

Если нужна вся информация о группе, то так:

select G.*
from Groupp G 
   join Students S on G.Gr_ID = S.Gr_ID
WHERE Avg_Mark >= 3.5
group by G.Gr_ID
HAVING count(G.Gr_ID) >= 3
READ ALSO
Что за пользователь в phpmyadmin?

Что за пользователь в phpmyadmin?

Установил phpMyAdmin и заметил, что создался пользователь phpmyadmin

145
Как правильно записать различные строки данных в одно поле?

Как правильно записать различные строки данных в одно поле?

На веб-сайте планируется сделать отслеживание входящего трафикаТо есть PHP скрипт должен принимать GET параметры входящего трафика и записывать...

258
объединить 3 запроса UPDATE MySQL

объединить 3 запроса UPDATE MySQL

Доброго времени суток!

156