CREATE TABLE subjects (
id INT,
name VARCHAR(100),
teacher VARCHAR(100),
cabinet INT
);
INSERT INTO subjects (Id, Name, Teacher, Cabinet)
VALUES
(1001, 'ΠΠ»Π³Π΅Π±ΡΠ°', 'Π§ΠΈΡΠΊΠΈΠ½Π° ΠΠ»ΡΠ³Π° ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΠΎΠ²Π½Π°', 431),
(1002, 'ΠΠΈΠΎΠ»ΠΎΠ³ΠΈΡ', 'ΠΠ½Π΄ΡΠ΅Π΅Π²Π° ΠΠ½Π½Π° Π’ΠΈΠΌΠΎΡΠ΅Π΅Π²Π½Π°', 522),
(1003, 'Π₯ΠΈΠΌΠΈΡ', 'ΠΠΎΠΊΡΠ΅Π²Π° Π’Π°ΡΡΡΠ½Π° ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΠΎΠ²Π½Π°', 123),
(1004, 'ΠΠ½ΠΎΡΡΡΠ°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ', 'ΠΠ½ΡΠΎΠ½Π΅Π½ΠΊΠΎ ΠΠ»Π΅Π½Π° ΠΠ»Π°Π΄ΠΈΠΌΠΈΡΠΎΠ²Π½Π°', 437),
(1005, 'ΠΠ΅ΠΎΠ³ΡΠ°ΡΠΈΡ', 'ΠΠ²Π°Π½ΠΎΠ²Π° ΠΡΠ΄ΠΌΠΈΠ»Π° ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΠΎΠ²Π½Π°', 501),
(1006, 'Π€ΠΈΠ·ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΡΠ»ΡΡΡΡΠ°', 'ΠΡΠΈΠ²ΠΎΡΠ΅Ρ Π’Π°ΠΌΠ°ΡΠ° Π―ΠΊΠΎΠ²Π»Π΅Π²Π½Π°', 236),
(1007, 'Π€ΠΈΠ·ΠΈΠΊΠ°', 'ΠΠΎΡΠ»ΡΡΠ΅Π½ΠΊΠΎ ΠΡΠ΄ΠΌΠΈΠ»Π° ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΠΎΠ²Π½Π°', 141);
CREATE TABLE diary (
id INT,
student VARCHAR(100),
mark INT,
subj_id INT,
date_mark DATE
);
INSERT INTO diary (Id, Student, Mark, Subj_id, Date_mark)
VALUES
(2001, 'ΠΠ½ΡΠΈΠΌΠΎΠ²Π° ΠΠ»ΠΈΠ·Π°Π²Π΅ΡΠ° ΠΠ½Π΄ΡΠ΅Π΅Π²Π½Π°', 5, 1001, '2015-01-10'),
(2002, 'ΠΠ΅Π»ΡΠ΅Π² ΠΠ°ΡΠ²Π΅ΠΉ ΠΡΡΡΠΌΠΎΠ²ΠΈΡ', 4, 1000, '2015-01-10'),
(2003, 'ΠΠΎΠ»Π΅Π½ΡΠΊΠΈΠΉ ΠΠ°ΡΠΈΠ»ΠΈΠΉ ΠΠΎΡΠΈΡΠΎΠ²ΠΈΡ', 2, 1003,'2015-01-10'),
(2004, 'Π€Π°Π·ΡΠ»Π»ΠΈΠ½Π° ΠΠΈΠ½Π° Π€Π°Π½ΠΈΠ»Π΅Π²Π½Π°', 4, 1004, '2015-01-10'),
(2005, 'Π₯Π°Π»ΠΈΡΠΎΠ²Π° Π Π΅Π½Π°ΡΠ° ΠΡΠ»Π°ΡΠΎΠ²Π½Π°', 5, 1009, '2015-01-10'),
(2006, 'ΠΠ°ΡΠ»ΡΠΊΠΎΠ² ΠΠΌΠΈΡΡΠΈΠΉ ΠΠ»Π°Π΄ΠΈΠΌΠΈΡΠΎΠ²ΠΈΡ', 3, 1007, '2015-01-10'),
(2007, 'Π₯Π°Π»ΠΈΡΠΎΠ²Π° Π Π΅Π½Π°ΡΠ° ΠΡΠ»Π°ΡΠΎΠ²Π½Π°', 4, 1005, '2015-01-10'),
(2008, 'Π€Π°Π·ΡΠ»Π»ΠΈΠ½Π° ΠΠΈΠ½Π° Π€Π°Π½ΠΈΠ»Π΅Π²Π½Π°', 3, 1003, '2015-01-10'),
(2009, 'Π₯Π°Π»ΠΈΡΠΎΠ²Π° Π Π΅Π½Π°ΡΠ° ΠΡΠ»Π°ΡΠΎΠ²Π½Π°', 5, 1005, '2015-01-10'),
(2010, 'ΠΠ΅Π»ΡΠ΅Π² ΠΠ°ΡΠ²Π΅ΠΉ ΠΡΡΡΠΌΠΎΠ²ΠΈΡ', 2, 1004, '2015-01-10'),
(2011, 'ΠΠ°ΡΠ»ΡΠΊΠΎΠ² ΠΠΌΠΈΡΡΠΈΠΉ ΠΠ»Π°Π΄ΠΈΠΌΠΈΡΠΎΠ²ΠΈΡ', 3, 1004, '2015-01-10'),
(2012, 'Π€Π°Π·ΡΠ»Π»ΠΈΠ½Π° ΠΠΈΠ½Π° Π€Π°Π½ΠΈΠ»Π΅Π²Π½Π°', 5, 1007, '2015-01-10'),
(2013, 'ΠΠΎΠ»Π΅Π½ΡΠΊΠΈΠΉ ΠΠ°ΡΠΈΠ»ΠΈΠΉ ΠΠΎΡΠΈΡΠΎΠ²ΠΈΡ', 4, 1002, '2015-01-10'),
(2014, 'Π₯Π°Π»ΠΈΡΠΎΠ²Π° Π Π΅Π½Π°ΡΠ° ΠΡΠ»Π°ΡΠΎΠ²Π½Π°', 5, 1002, '2015-01-10'),
(2015, 'Π€Π°Π·ΡΠ»Π»ΠΈΠ½Π° ΠΠΈΠ½Π° Π€Π°Π½ΠΈΠ»Π΅Π²Π½Π°', 5, 1001, '2015-01-10'),
(2016, 'ΠΠ°ΡΠ»ΡΠΊΠΎΠ² ΠΠΌΠΈΡΡΠΈΠΉ ΠΠ»Π°Π΄ΠΈΠΌΠΈΡΠΎΠ²ΠΈΡ', 4, 1001, '2015-01-10'),
(2017, 'ΠΠ½ΡΠΈΠΌΠΎΠ²Π° ΠΠ»ΠΈΠ·Π°Π²Π΅ΡΠ° ΠΠ½Π΄ΡΠ΅Π΅Π²Π½Π°', 4, 1005, '2015-01-10'),
(2018, 'ΠΠΎΠ»Π΅Π½ΡΠΊΠΈΠΉ ΠΠ°ΡΠΈΠ»ΠΈΠΉ ΠΠΎΡΠΈΡΠΎΠ²ΠΈΡ', 3, 1003, '2015-01-10'),
(2019, 'ΠΠ½ΡΠΈΠΌΠΎΠ²Π° ΠΠ»ΠΈΠ·Π°Π²Π΅ΡΠ° ΠΠ½Π΄ΡΠ΅Π΅Π²Π½Π°', 5, 1007, '2015-01-10'),
(2020, 'ΠΠ΅Π»ΡΠ΅Π² ΠΠ°ΡΠ²Π΅ΠΉ ΠΡΡΡΠΌΠΎΠ²ΠΈΡ', 2, 1004, '2015-01-10');
SELECT char_length(dia.student)
FROM subjects AS sub RIGHT JOIN diary AS dia
ON sub.id = dia.subj_id
GROUP BY dia.student
HAVING avg(dia.mark) LIKE (SELECT max(av.avg_mark)
FROM (SELECT dia1.student, avg(dia1.mark) AS avg_mark
FROM subjects AS sub1 RIGHT JOIN diary AS dia1
ON sub1.id = dia1.subj_id
WHERE sub1.cabinet NOT LIKE '%4%'
GROUP BY dia1.student) AS av);