Skip to content

Instantly share code, notes, and snippets.

@SlavikArt
Created January 30, 2024 17:09
Show Gist options
  • Save SlavikArt/624c28898cfec30af9dea57daacf3c3c to your computer and use it in GitHub Desktop.
Save SlavikArt/624c28898cfec30af9dea57daacf3c3c to your computer and use it in GitHub Desktop.

Library Queries

показать имена преподавателей и названия книг, которые они взяли в библиотеке

1

показать имена студентов, никогда не бравших книг

2

показать самого активного библиотекаря (выдал больше всего книг)

3

показать самого ответственного библиотекаря (ему книг вернули больше всего)

4

-- Создать 4 представления, которые покажут данные из условий ниже.
-- Для проверки работоспособности запросов нужна БД Library
-- показать имена преподавателей и названия книг,
-- которые они взяли в библиотеке
CREATE OR ALTER VIEW Profs_And_Books AS
SELECT
Teacher.first_name,
Teacher.last_name,
Book.name AS borrowed_books
FROM Teacher
JOIN T_Cards ON Teacher.id = T_Cards.id_teacher
JOIN Book ON T_Cards.id_book = Book.id
-- показать имена студентов, никогда не бравших книг
CREATE OR ALTER VIEW Students_Without_Books AS
SELECT
Student.first_name,
Student.last_name
FROM Student
WHERE id NOT IN (SELECT DISTINCT id_student FROM S_Cards)
-- показать самого активного библиотекаря
-- (выдал больше всего книг)
CREATE OR ALTER VIEW Most_Active_Labrarian AS
SELECT TOP 1
Librarian.first_name,
Librarian.last_name,
COUNT(*) AS books_borrowed
FROM Librarian
JOIN S_Cards ON Librarian.id = S_Cards.id_librarian
GROUP BY Librarian.first_name, Librarian.last_name
-- показать самого ответственного библиотекаря
-- (ему книг вернули больше всего)
CREATE OR ALTER VIEW Most_Responsible_Librarian AS
SELECT TOP 1
Librarian.first_name,
Librarian.last_name,
COUNT(*) AS books_returned
FROM Librarian
JOIN S_Cards ON Librarian.id = S_Cards.id_librarian
WHERE S_Cards.date_in IS NOT NULL
GROUP BY Librarian.first_name, Librarian.last_name
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment