# πŸ“Š HW 6 DB HSE ## by Anna Sibirtseva BSE206 **17.10.2022** ### ⭐ Task 1 > ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ SQL-запросы: #### πŸ”Έ task 1.1 ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС названия ΠΊΠ½ΠΈΠ³ вмСстС с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈΠ·Π΄Π°Ρ‚Π΅Π»Π΅ΠΉ. ```sql SELECT Title, PubName FROM Book ``` #### πŸ”Έ task 1.2 Π’ ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ наибольшСС количСство страниц? ```sql SELECT Title, Author FROM Book ORDER BY PagesNum DESC LIMIT 1 ``` #### πŸ”Έ task 1.3 КакиС Π°Π²Ρ‚ΠΎΡ€Ρ‹ написали Π±ΠΎΠ»Π΅Π΅ 5 ΠΊΠ½ΠΈΠ³? ```sql SELECT Author FROM Book GROUP BY Author HAVING COUNT(*) > 5 ``` #### πŸ”Έ task 1.4 Π’ ΠΊΠ°ΠΊΠΈΡ… ΠΊΠ½ΠΈΠ³Π°Ρ… Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π² Π΄Π²Π° Ρ€Π°Π·Π° большС страниц, Ρ‡Π΅ΠΌ срСднСС количСство страниц для всСх ΠΊΠ½ΠΈΠ³? ```sql SELECT Title, Author FROM Book WHERE PagesNum > (SELECT AVG(PagesNum) * 2 FROM Book) ``` #### πŸ”Έ task 1.5 КакиС ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ содСрТат ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ? ```sql SELECT ParentCat FROM Category WHERE ParentCat IS NOT NULL AND CategoryName IS NOT NULL ``` #### πŸ”Έ task 1.6 Π£ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΡ€Π° (ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π° Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹) написано максимальноС количСство ΠΊΠ½ΠΈΠ³? ```sql SELECT Author FROM Book GROUP BY Author ORDER BY COUNT(*) DESC LIMIT 1 ``` #### πŸ”Έ task 1.7 КакиС Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ Π·Π°Π±Ρ€ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ всС ΠΊΠ½ΠΈΠ³ΠΈ (Π½Π΅ ΠΊΠΎΠΏΠΈΠΈ), написанныС "ΠœΠ°Ρ€ΠΊΠΎΠΌ Π’Π²Π΅Π½ΠΎΠΌ"? ```sql SELECT FirstName, lastname FROM Reader JOIN Borrowing ON Reader.ID = Borrowing.ReaderNr JOIN Book ON Borrowing.ISBN = Book.isbn WHERE Author = 'ΠœΠ°Ρ€ΠΊ Π’Π²Π΅Π½' GROUP BY ID HAVING COUNT(DISTINCT Book.isbn) = (SELECT COUNT(*) FROM Book WHERE Author = 'ΠœΠ°Ρ€ΠΊ Π’Π²Π΅Π½') ``` #### πŸ”Έ task 1.8 КакиС ΠΊΠ½ΠΈΠ³ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ? ```sql SELECT Title, Author FROM Book WHERE isbn in(SELECT isbn FROM Copy GROUP BY isbn HAVING COUNT(*) > 1) ``` #### πŸ”Έ task 1.9 ВОП 10 самых старых ΠΊΠ½ΠΈΠ³ ```sql SELECT Title, Author FROM Book ORDER BY PubYear LIMIT 10 ``` #### πŸ”Έ task 1.10 ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅ всС ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ β€œΠ‘ΠΏΠΎΡ€Ρ‚β€ (с Π»ΡŽΠ±Ρ‹ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ влоТСности). ```sql WITH RECURSIVE SportCategory AS (SELECT CategoryName FROM Category WHERE ParentCat = 'Π‘ΠΏΠΎΡ€Ρ‚' UNION SELECT CategoryName FROM Category JOIN SportCategory ON Category.ParentCat = SportCategory.CategName) SELECT DISTINCT CategoryName FROM SportCategory ``` ### ⭐ Task 2 > ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ SQL-запросы для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… дСйствий: #### πŸ”Έ task 2.1 Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ запись ΠΎ Π±Ρ€ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΌ β€˜Π’Π°ΡΠΈΠ»Π΅Π΅ΠΌ ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²Ρ‹ΠΌβ€™ ΠΊΠ½ΠΈΠ³ΠΈ с ISBN 123456 ΠΈ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ΠΊΠΎΠΏΠΈΠΈ 4. ```sql INSERT INTO Borrowing (ReaderNr, ISBN, CopyNumber, ReturnDate) VALUES ((SELECT ID, FROM Reader WHERE FirstName = 'Василий' AND LastName = 'ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²'), '123456', 4, CURRENT_TIMESTAMP) ``` #### πŸ”Έ task 2.2 Π£Π΄Π°Π»ΠΈΡ‚ΡŒ всС ΠΊΠ½ΠΈΠ³ΠΈ, Π³ΠΎΠ΄ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 2000 Π³ΠΎΠ΄. ```sql DELETE FROM Book WHERE (EXTRACT(YEAR FROM PubYear) > 2000); ``` #### πŸ”Έ task 2.3 Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΄Π°Ρ‚Ρƒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° для всСх ΠΊΠ½ΠΈΠ³ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ "Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…", начиная с 01.01.2016, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π² заимствовании Π½Π° 30 Π΄Π½Π΅ΠΉ дольшС (ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² SQL ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ числа ΠΊ Π΄Π°Ρ‚Π°ΠΌ). ```sql UPDATE Borrowing SET ReturnDate = ReturnDate + interval '30 day' WHERE ReturnDate > '2016-01-01 00:00:00' AND ISBN in (SELECT ISBN FROM BookCat WHERE CategoryName = 'Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…') ``` ### ⭐ Task 3 > ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ Π½Π° русском языкС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… запросов: #### πŸ”Έ task 3.1 ```sql SELECT s.Name, s.MatrNr FROM Student s WHERE NOT EXISTS (SELECT * FROM Check c WHERE c.MatrNr = s.MatrNr AND c.Note >= 4.0 ) ; ``` **ОписаниС:** Найти всСх студСнтов (Имя ΠΈ ID), Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ хотя Π±Ρ‹ ΠΎΠ΄Π½Π° Π½Π΅ΡƒΠ΄Π²ΠΎΠ»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ (мСньшС 4) ΠΎΡ†Π΅Π½ΠΊΠ° Π·Π° Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅Ρ‚ ΠΎΡ†Π΅Π½ΠΊΠΈ. #### πŸ”Έ task 3.2 ```sql ( SELECT p.ProfNr, p.Name, sum(lec.Credit) FROM Professor p, Lecture lec WHERE p.ProfNr = lec.ProfNr GROUP BY p.ProfNr, p.Name) UNION ( SELECT p.ProfNr, p.Name, 0 FROM Professor p WHERE NOT EXISTS ( SELECT * FROM Lecture lec WHERE lec.ProfNr = p.ProfNr )); ``` **ОписаниС:** Найти ΠΈ вывСсти ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ проффСссорС (Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€, имя ΠΈ сумму Π·Π°Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… часов(ΠΊΡ€Π΅Π΄ΠΈΡ‚ΠΎΠ²) Π·Π° Π»Π΅ΠΊΡ†ΠΈΠΈ), Ссли ΠΎΠ½ Π²Π΅Π΄Π΅Ρ‚ хотя Π±Ρ‹ ΠΎΠ΄Π½Ρƒ Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΈ 0, Ссли проффСссор Π½Π΅ вялСтся Π»Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ. #### πŸ”Έ task 3.3 ```sql SELECT s.Name, p.Note FROM Student s, Lecture lec, Check c WHERE s.MatrNr = c.MatrNr AND lec.LectNr = c.LectNr AND c.Note >= 4 AND c.Note >= ALL ( SELECT c1.Note FROM Check c1 WHERE c1.MatrNr = c.MatrNr ) ``` **ОписаниС:** Найти ΠΈ вывСсти ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ студСнтах (ΠΈΡ… ΠΈΠΌΠ΅Π½Π° ΠΈ ΠΎΡ†Π΅Π½ΠΊΠΈ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π·Π° Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ большС Π»ΠΈΠ±ΠΎ Ρ€Π°Π²Π½Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ΠΌ ΠΈ большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Ρ‹ ΠΈΡ… Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠ΅ΠΉ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠ΅.