Выборка данных и выполнение операций с использованием логических операторов в PostgreSQL


Вариант 1: База данных интернет-магазина книг

Вариант 1: База данных интернет-магазина книг

Сценарий: Управление ассортиментом интернет-магазина книг, включая книги, авторов и категории.

Схема базы данных:

  • Название таблицы: books
  • Названия столбцов и типы данных:
    • book_id SERIAL PRIMARY KEY
    • title VARCHAR(100)
    • author_name VARCHAR(100)
    • category VARCHAR(50)
    • price DECIMAL(5,2)
    • publication_year INTEGER
  • Данные для вставки:
[
    ('The Lord of the Rings', 'J.R.R. Tolkien', 'Fantasy', 29.99, 1954),
    ('Pride and Prejudice', 'Jane Austen', 'Classic', 12.50, 1813),
    ('The Hitchhiker''s Guide to the Galaxy', 'Douglas Adams', 'Science Fiction', 15.75, 1979),
    ('To Kill a Mockingbird', 'Harper Lee', 'Classic', 14.20, 1960),
    ('Dune', 'Frank Herbert', 'Science Fiction', 22.00, 1965),
    ('1984', 'George Orwell', 'Dystopian', 11.99, 1949),
    ('Jane Eyre', 'Charlotte Brontë', 'Classic', 10.00, 1847),
    ('Foundation', 'Isaac Asimov', 'Science Fiction', 18.50, 1951),
    ('The Great Gatsby', 'F. Scott Fitzgerald', 'Classic', 13.00, 1925),
    ('Brave New World', 'Aldous Huxley', 'Dystopian', 16.00, 1932)
]

Практические упражнения:

  1. Выбрать книги, цена которых меньше $15.00 и которые относятся к категории ‘Classic’.
  2. Выбрать книги, написанные ‘Jane Austen’ или опубликованные после 1970 года.
  3. Выбрать книги, которые не относятся к категории ‘Science Fiction’.
  4. Выбрать книги, которые относятся к категориям ‘Classic’ или ‘Dystopian’ И цена которых больше $12.00.
  5. Выбрать книги, опубликованные до 1960 года и цена которых больше $14.00.
  6. Выбрать книги жанра ‘Science Fiction’ стоимостью менее $20 ИЛИ книги жанра ‘Classic’, изданные до 1900 года.
  7. Выбрать книги, которые НЕ относятся к жанрам (‘Fantasy’ ИЛИ ‘Dystopian’) и цена которых меньше $15.

Вариант 2: База данных управления сотрудниками

Вариант 2: База данных управления сотрудниками

Сценарий: Управление информацией о сотрудниках компании, включая отделы и зарплаты.

Схема базы данных:

  • Название таблицы: employees
  • Названия столбцов и типы данных:
    • employee_id SERIAL PRIMARY KEY
    • first_name VARCHAR(50)
    • last_name VARCHAR(50)
    • department VARCHAR(50)
    • salary INTEGER
    • hire_year INTEGER
  • Данные для вставки:
[
    ('Alice', 'Smith', 'Sales', 60000, 2020),
    ('Bob', 'Johnson', 'Marketing', 55000, 2021),
    ('Charlie', 'Brown', 'IT', 70000, 2019),
    ('Diana', 'Davis', 'Sales', 62000, 2022),
    ('Eve', 'Miller', 'HR', 58000, 2023),
    ('Frank', 'Wilson', 'IT', 75000, 2020),
    ('Grace', 'Moore', 'Marketing', 53000, 2018),
    ('Hank', 'Taylor', 'HR', 60000, 2022),
    ('Ivy', 'Anderson', 'Sales', 65000, 2019),
    ('Jack', 'Thomas', 'IT', 80000, 2021)
]

Практические упражнения:

  1. Выбрать сотрудников, зарплата которых больше $65000 и которые работают в отделе ‘IT’.
  2. Выбрать сотрудников, которые работают в отделе ‘Sales’ или были приняты на работу до 2021 года.
  3. Выбрать сотрудников, которые не работают в отделе ‘Marketing’.
  4. Выбрать сотрудников, которые работают в отделах ‘HR’ или ‘Sales’ И зарплата которых меньше $61000.
  5. Выбрать сотрудников, принятых на работу в 2020 году или позже, с зарплатой ровно $60000.
  6. Выбрать сотрудников из отделов ‘IT’ или ‘HR’, принятых на работу до 2022 года, И с зарплатой выше $55000.
  7. Выбрать сотрудников, которые не находятся в отделе “Sales” и имеют зарплату менее 70000 долларов.

Вариант 3: База данных музыкального стримингового сервиса

Вариант 3: База данных музыкального стримингового сервиса

Сценарий: Управление песнями в музыкальном стриминговом сервисе, включая жанр и продолжительность.

Схема базы данных:

  • Название таблицы: songs
  • Названия столбцов и типы данных:
    • song_id SERIAL PRIMARY KEY
    • title VARCHAR(100)
    • artist VARCHAR(100)
    • genre VARCHAR(50)
    • duration_seconds INTEGER
    • release_year INTEGER
  • Данные для вставки:
[
    ('Bohemian Rhapsody', 'Queen', 'Rock', 355, 1975),
    ('Imagine', 'John Lennon', 'Pop', 187, 1971),
    ('Stairway to Heaven', 'Led Zeppelin', 'Rock', 482, 1971),
    ('Like a Rolling Stone', 'Bob Dylan', 'Rock', 367, 1965),
    ('Hotel California', 'Eagles', 'Rock', 391, 1976),
    ('Billie Jean', 'Michael Jackson', 'Pop', 294, 1982),
    ('Smells Like Teen Spirit', 'Nirvana', 'Grunge', 301, 1991),
    ('Hey Jude', 'The Beatles', 'Pop', 431, 1968),
    ('Wonderwall', 'Oasis', 'Britpop', 258, 1995),
    ('Yesterday', 'The Beatles', 'Pop', 125, 1965)
]

Практические упражнения:

  1. Выбрать песни, продолжительность которых больше 300 секунд и которые относятся к жанру ‘Rock’.
  2. Выбрать песни группы ‘The Beatles’ или выпущенные после 1980 года.
  3. Выбрать песни, которые не относятся к жанру ‘Pop’.
  4. Выбрать песни, которые относятся к жанрам ‘Rock’ или ‘Grunge’ И продолжительность которых меньше 360 секунд.
  5. Выбрать песни, выпущенные в 1970-х годах (между 1970 и 1979 годами включительно), продолжительность которых больше 350 секунд.
  6. Выбрать песни жанра ‘Pop’, выпущенные до 1970 года, ИЛИ песни жанра ‘Rock’ группы ‘Queen’.
  7. Выбрать песни, которые НЕ относятся к жанрам (‘Pop’ ИЛИ ‘Britpop’) и продолжительность которых меньше 400 секунд.

Вариант 4: База данных платформы онлайн-курсов

Вариант 4: База данных платформы онлайн-курсов

Сценарий: Управление курсами на платформе онлайн-обучения, включая категории и зачетные единицы (кредиты).

Схема базы данных:

  • Название таблицы: courses
  • Названия столбцов и типы данных:
    • course_id SERIAL PRIMARY KEY
    • course_name VARCHAR(100)
    • instructor VARCHAR(100)
    • category VARCHAR(50)
    • credits INTEGER
    • difficulty_level VARCHAR(50)
  • Данные для вставки:
[
    ('Introduction to Python', 'Dr. Smith', 'Computer Science', 3, 'Beginner'),
    ('Calculus I', 'Prof. Jones', 'Mathematics', 4, 'Beginner'),
    ('Data Structures and Algorithms', 'Dr. Smith', 'Computer Science', 4, 'Intermediate'),
    ('Linear Algebra', 'Prof. Jones', 'Mathematics', 3, 'Intermediate'),
    ('Web Development Basics', 'Dr. Williams', 'Computer Science', 3, 'Beginner'),
    ('Organic Chemistry', 'Dr. Brown', 'Chemistry', 4, 'Advanced'),
    ('Probability and Statistics', 'Prof. Green', 'Mathematics', 4, 'Intermediate'),
    ('Advanced Algorithms', 'Dr. Smith', 'Computer Science', 4, 'Advanced'),
    ('Physical Chemistry', 'Dr. Brown', 'Chemistry', 4, 'Advanced'),
    ('Discrete Mathematics', 'Prof. Green', 'Mathematics', 3, 'Beginner')
]

Практические упражнения:

  1. Выбрать курсы, которые имеют 4 зачетные единицы и относятся к категории ‘Computer Science’.
  2. Выбрать курсы, которые преподает ‘Prof. Jones’ или имеют уровень сложности ‘Beginner’.
  3. Выбрать курсы, которые не относятся к категории ‘Mathematics’.
  4. Выбрать курсы, которые относятся к категориям ‘Computer Science’ или ‘Chemistry’ И имеют уровень сложности ‘Advanced’.
  5. Выбрать курсы с 3 зачетными единицами и уровнем сложности ‘Beginner’.
  6. Выбрать курсы, которые являются курсами по ‘Mathematics’ с 4 зачетными единицами ИЛИ курсами по ‘Computer Science’, которые преподает ‘Dr. Williams’.
  7. Выбрать курсы, которые НЕ имеют уровень сложности (‘Beginner’ ИЛИ ‘Intermediate’) и имеют 4 зачетные единицы.

Вариант 5: База данных бронирования отелей

Вариант 5: База данных бронирования отелей

Сценарий: Управление отелями и их информацией, включая город и рейтинг звезд.

Схема базы данных:

  • Название таблицы: hotels
  • Названия столбцов и типы данных:
    • hotel_id SERIAL PRIMARY KEY
    • hotel_name VARCHAR(100)
    • city VARCHAR(50)
    • star_rating INTEGER
    • price_per_night DECIMAL(6,2)
    • availability INTEGER
  • Данные для вставки:
[
    ('Grand Hotel', 'New York', 5, 350.00, 20),
    ('City Center Inn', 'London', 3, 180.50, 15),
    ('Ocean View Resort', 'Miami', 4, 250.75, 10),
    ('Mountain Lodge', 'Denver', 3, 150.20, 8),
    ('Sunset Suites', 'Los Angeles', 4, 280.90, 12),
    ('Royal Plaza', 'Paris', 5, 400.00, 5),
    ('Bay Breeze Hotel', 'San Francisco', 3, 200.00, 25),
    ('Alpine Retreat', 'Zurich', 4, 300.50, 18),
    ('Harbor Lights Inn', 'Boston', 3, 170.80, 30),
    ('Desert Oasis Hotel', 'Phoenix', 4, 230.40, 22)
]

Практические упражнения:

  1. Выбрать отели в ‘New York’ с рейтингом 4 звезды или выше.
  2. Выбрать отели в ‘London’ или с ценой за ночь менее $200.
  3. Выбрать отели, которые не расположены в ‘Paris’.
  4. Выбрать отели в ‘Miami’ или ‘Los Angeles’ И с рейтингом 4 звезды.
  5. Выбрать отели с доступностью более 15 номеров и ценой за ночь менее $200.
  6. Выбрать отели, которые находятся в ‘San Francisco’ с доступностью более 20 номеров ИЛИ в ‘Denver’ с рейтингом 3 звезды.
  7. Выбрать отели, которые НЕ находятся в ‘New York’ и имеют цену за ночь выше $250.

Вариант 6: База данных сообщений в социальных сетях

Вариант 6: База данных сообщений в социальных сетях

Сценарий: Управление сообщениями в социальных сетях, включая автора и хэштеги.

Схема базы данных:

  • Название таблицы: posts
  • Названия столбцов и типы данных:
    • post_id SERIAL PRIMARY KEY
    • author_name VARCHAR(50)
    • content TEXT
    • hashtags VARCHAR(100)
    • likes INTEGER
    • post_date DATE
  • Данные для вставки:
[
    ('User1', 'Enjoying a sunny day! #sunshine #happy', '#sunshine #happy', 150, '2024-03-10'),
    ('User2', 'Just finished reading a great book. #reading #books', '#reading #books', 80, '2024-03-09'),
    ('User3', 'Exploring new coffee shops in town. #coffee #cafe', '#coffee #cafe', 120, '2024-03-08'),
    ('User1', 'Coding all night long. #coding #programming', '#coding #programming', 95, '2024-03-07'),
    ('User4', 'Delicious homemade pizza! #pizza #food', '#pizza #food', 200, '2024-03-06'),
    ('User2', 'Thinking about my next travel destination. #travel #vacation', '#travel #vacation', 70, '2024-03-05'),
    ('User5', 'Morning workout done! #fitness #gym', '#fitness #gym', 110, '2024-03-04'),
    ('User3', 'Attending a tech conference. #tech #conference', '#tech #conference', 130, '2024-03-03'),
    ('User4', 'Movie night at home. #movie #film', '#movie #film', 160, '2024-03-02'),
    ('User5', 'Enjoying the weekend vibes. #weekend #relax', '#weekend #relax', 180, '2024-03-01')
]

Практические упражнения:

  1. Выбрать сообщения с более чем 100 лайками и содержащие хэштег ‘#coffee’.
  2. Выбрать сообщения автора ‘User1’ или содержащие хэштег ‘#travel’.
  3. Выбрать сообщения, которые не содержат хэштег ‘#coding’.
  4. Выбрать сообщения, содержащие хэштеги ‘#food’ или ‘#fitness’ И с более чем 140 лайками.
  5. Выбрать сообщения от ‘2024-03-05’ или позже с количеством лайков менее 100.
  6. Выбрать сообщения, которые либо написаны ‘User4’ и имеют более 150 лайков, ЛИБО написаны ‘User3’ и содержат хэштег ‘#tech’.
  7. Выбрать сообщения, которые НЕ написаны ‘User2’ и имеют более 100 лайков.

Вариант 7: База данных библиотеки

Вариант 7: База данных библиотеки

Сценарий: Управление библиотечным фондом, включая книги, авторов, жанры и доступность.

Схема базы данных:

  • Название таблицы: library_books
  • Названия столбцов и типы данных:
    • book_id SERIAL PRIMARY KEY
    • book_title VARCHAR(100)
    • author_name VARCHAR(100)
    • genre VARCHAR(50)
    • publication_year INTEGER
    • is_available BOOLEAN
  • Данные для вставки:
[
    ('The Hobbit', 'J.R.R. Tolkien', 'Fantasy', 1937, TRUE),
    ('The Catcher in the Rye', 'J.D. Salinger', 'Literary Fiction', 1951, FALSE),
    ('Animal Farm', 'George Orwell', 'Satire', 1949, TRUE),
    ('One Hundred Years of Solitude', 'Gabriel García Márquez', 'Magical Realism', 1967, TRUE),
    ('Fahrenheit 451', 'Ray Bradbury', 'Dystopian', 1953, FALSE),
    ('The Lord of the Flies', 'William Golding', 'Allegorical Fiction', 1954, TRUE),
    ('Pride and Prejudice', 'Jane Austen', 'Romance', 1813, TRUE),
    ('To the Lighthouse', 'Virginia Woolf', 'Modernist', 1927, FALSE),
    ('Crime and Punishment', 'Fyodor Dostoevsky', 'Psychological Thriller', 1866, TRUE),
    ('Beloved', 'Toni Morrison', 'Historical Fiction', 1987, TRUE)
]

Практические упражнения:

  1. Выбрать книги, которые доступны (is_available равно true) и относятся к жанру ‘Fantasy’.
  2. Выбрать книги, написанные ‘George Orwell’ или опубликованные до 1950 года.
  3. Выбрать книги, которые не относятся к жанру ‘Literary Fiction’.
  4. Выбрать книги, которые относятся к жанрам ‘Fantasy’ или ‘Satire’ И в настоящее время доступны.
  5. Выбрать книги, опубликованные после 1960 года и недоступные.
  6. Выбрать книги, которые являются либо книгами жанра ‘Romance’, опубликованными до 1900 года, ЛИБО книгами жанра ‘Dystopian’, опубликованными после 1950 года.
  7. Выбрать книги, которые НЕ относятся к жанрам (‘Modernist’ ИЛИ ‘Allegorical Fiction’) и доступны.

Вариант 8: База данных товаров для электронной коммерции

Вариант 8: База данных товаров для электронной коммерции

Сценарий: Управление товарами в интернет-магазине, включая категории, цену и количество на складе.

Схема базы данных:

  • Название таблицы: products
  • Названия столбцов и типы данных:
    • product_id SERIAL PRIMARY KEY
    • product_name VARCHAR(100)
    • category VARCHAR(50)
    • price DECIMAL(7,2)
    • stock_quantity INTEGER
    • manufacturer VARCHAR(50)
  • Данные для вставки:
[
    ('Laptop', 'Electronics', 1200.00, 50, 'TechCorp'),
    ('Smartphone', 'Electronics', 800.50, 75, 'Gadget Inc.'),
    ('T-shirt', 'Apparel', 25.99, 200, 'Fashion Co.'),
    ('Jeans', 'Apparel', 65.00, 150, 'Denim World'),
    ('Coffee Maker', 'Home Appliances', 75.20, 30, 'KitchenTech'),
    ('Blender', 'Home Appliances', 50.00, 40, 'BlendMaster'),
    ('Running Shoes', 'Sports & Outdoors', 90.75, 100, 'SportGear'),
    ('Yoga Mat', 'Sports & Outdoors', 20.50, 120, 'FitnessPlus'),
    ('Desk Lamp', 'Furniture', 35.00, 60, 'HomeStyle'),
    ('Office Chair', 'Furniture', 150.00, 25, 'OfficePro')
]

Практические упражнения:

  1. Выбрать товары из категории ‘Electronics’, цена которых меньше $1000.00.
  2. Выбрать товары из категории ‘Apparel’ или с количеством на складе больше 180.
  3. Выбрать товары, которые не относятся к категории ‘Home Appliances’.
  4. Выбрать товары из категорий ‘Electronics’ или ‘Furniture’ И с ценой больше $100.00.
  5. Выбрать товары с количеством на складе меньше 60 и произведенные компанией ‘KitchenTech’.
  6. Выбрать товары, которые являются либо товарами категории ‘Sports & Outdoors’ по цене ниже $50, ЛИБО товарами категории ‘Furniture’, произведенными компанией ‘HomeStyle’.
  7. Выбрать товары, которые НЕ относятся к категориям (‘Apparel’ ИЛИ ‘Furniture’) и имеют количество на складе больше 35.

Вариант 9: База данных бронирования авиабилетов

Вариант 9: База данных бронирования авиабилетов

Сценарий: Управление информацией о рейсах для системы бронирования, включая город отправления, город назначения и цену.

Схема базы данных:

  • Название таблицы: flights
  • Названия столбцов и типы данных:
    • flight_id SERIAL PRIMARY KEY
    • flight_number VARCHAR(10)
    • origin_city VARCHAR(50)
    • destination_city VARCHAR(50)
    • departure_date DATE
    • price DECIMAL(8,2)
    • airline VARCHAR(50)
  • Данные для вставки:
[
    ('AA123', 'New York', 'London', '2024-04-15', 550.00, 'American Airlines'),
    ('BA456', 'London', 'Paris', '2024-04-16', 180.75, 'British Airways'),
    ('DL789', 'New York', 'Paris', '2024-04-20', 620.50, 'Delta'),
    ('UA101', 'Chicago', 'Denver', '2024-04-18', 250.00, 'United Airlines'),
    ('SW202', 'Los Angeles', 'Phoenix', '2024-04-22', 120.25, 'Southwest'),
    ('AF303', 'Paris', 'Rome', '2024-04-17', 200.90, 'Air France'),
    ('LH404', 'Frankfurt', 'New York', '2024-04-19', 700.00, 'Lufthansa'),
    ('EK505', 'Dubai', 'London', '2024-04-21', 680.30, 'Emirates'),
    ('QR606', 'Doha', 'New York', '2024-04-23', 720.00, 'Qatar Airways'),
    ('AC707', 'Toronto', 'Chicago', '2024-04-24', 300.60, 'Air Canada')
]

Практические упражнения:

  1. Выбрать рейсы из ‘New York’ в ‘London’ с ценой менее $600.00.
  2. Выбрать рейсы в ‘Paris’ или с датой отправления ‘2024-04-20’.
  3. Выбрать рейсы, которые не выполняются авиакомпанией ‘British Airways’.
  4. Выбрать рейсы из ‘New York’ или ‘Chicago’ И с ценой менее $300.00.
  5. Выбрать рейсы, отправляющиеся после ‘2024-04-20’ и выполняемые авиакомпанией ‘Southwest’.
  6. Выбрать рейсы, которые либо из ‘London’ в ‘Paris’ по цене ниже $200, ЛИБО из ‘Chicago’ в ‘Denver’, выполняемые авиакомпанией ‘United Airlines’.
  7. Выбрать рейсы, которые НЕ (в ‘Paris’ ИЛИ в ‘Rome’) и имеют цену менее $700.

Вариант 10: База данных оценок студентов (Курсы и оценки)

Вариант 10: База данных оценок студентов (Курсы и оценки)

Сценарий: Управление оценками студентов по различным курсам за семестры.

Схема базы данных:

  • Название таблицы: student_grades
  • Названия столбцов и типы данных:
    • record_id SERIAL PRIMARY KEY
    • student_id INTEGER
    • course_name VARCHAR(100)
    • semester VARCHAR(50)
    • grade VARCHAR(2)
    • credits INTEGER
  • Данные для вставки:
[
    (101, 'Introduction to Programming', 'Fall 2023', 'A', 3),
    (101, 'Calculus I', 'Fall 2023', 'B', 4),
    (102, 'Data Structures', 'Spring 2024', 'A+', 4),
    (102, 'Linear Algebra', 'Spring 2024', 'C', 3),
    (103, 'Web Development', 'Fall 2023', 'B+', 3),
    (103, 'Database Systems', 'Spring 2024', 'A', 3),
    (104, 'Probability Theory', 'Fall 2023', 'C+', 4),
    (104, 'Statistics', 'Spring 2024', 'B', 4),
    (105, 'Operating Systems', 'Spring 2024', 'A-', 4),
    (105, 'Computer Networks', 'Spring 2024', 'B+', 3)
]

Практические упражнения:

  1. Выбрать записи для студента с ID 101 с оценкой ‘A’ или выше (предположим, что ‘A+’ > ‘A’ > ‘A-‘). Для простоты, рассматривайте ‘A’, ‘A+’, ‘A-‘ как ‘A’ или выше в этом контексте, если прямое сравнение сложно для начинающих. Или упростите до оценки только ‘A’.
  2. Выбрать записи для курса ‘Calculus I’ или за семестр ‘Fall 2023’.
  3. Выбрать записи, которые не относятся к курсу ‘Linear Algebra’.
  4. Выбрать записи за семестр ‘Spring 2024’ И с оценкой ‘B’ или выше (рассматривайте ‘B’, ‘B+’, ‘B-‘). Или упростите до оценки только ‘B’.
  5. Выбрать записи с 4 кредитами и оценкой хуже ‘B’ (рассматривайте ‘C’, ‘C+’, ‘C-‘). Или упростите до оценки ‘C’ или хуже.
  6. Выбрать записи, которые относятся к семестру ‘Fall 2023’ с оценкой ‘A’ ИЛИ к семестру ‘Spring 2024’ для курса ‘Database Systems’.
  7. Выбрать записи, которые НЕ относятся (к семестру ‘Fall 2023’ ИЛИ к семестру ‘Spring 2024’) и имеют 3 кредита. (Это может не вернуть никаких результатов с данными данными, рассмотрите возможность изменения данных, если необходимо иметь записи из других семестров, или скорректируйте упражнение, например, НЕ (оценка ‘A’ ИЛИ оценка ‘B’). Давайте скорректируем: Выбрать записи, у которых НЕ (оценка ‘A’ ИЛИ оценка ‘B’) и которые относятся к курсам с 4 кредитами.

Вариант 11: База данных фильмов

Вариант 11: База данных фильмов

Сценарий: Управление информацией о фильмах, включая жанр, режиссера и рейтинги.

Схема базы данных:

  • Название таблицы: movies
  • Названия столбцов и типы данных:
    • movie_id SERIAL PRIMARY KEY
    • title VARCHAR(100)
    • genre VARCHAR(50)
    • director VARCHAR(100)
    • release_year INTEGER
    • imdb_rating DECIMAL(3,1)
  • Данные для вставки:
[
    ('Inception', 'Science Fiction', 'Christopher Nolan', 2010, 8.8),
    ('The Shawshank Redemption', 'Drama', 'Frank Darabont', 1994, 9.3),
    ('Pulp Fiction', 'Crime', 'Quentin Tarantino', 1994, 8.9),
    ('The Dark Knight', 'Action', 'Christopher Nolan', 2008, 9.0),
    ('Forrest Gump', 'Drama', 'Robert Zemeckis', 1994, 8.8),
    ('Interstellar', 'Science Fiction', 'Christopher Nolan', 2014, 8.6),
    ('The Matrix', 'Science Fiction', 'Lana Wachowski', 1999, 8.7),
    ('Goodfellas', 'Crime', 'Martin Scorsese', 1990, 8.7),
    ('Seven Samurai', 'Action', 'Akira Kurosawa', 1954, 8.6),
    ('Parasite', 'Comedy', 'Bong Joon-ho', 2019, 8.5)
]

Практические упражнения:

  1. Выбрать фильмы с рейтингом IMDb выше 9.0 и относящиеся к жанру ‘Drama’.
  2. Выбрать фильмы, снятые режиссером ‘Christopher Nolan’ или выпущенные до 1995 года.
  3. Выбрать фильмы, которые не относятся к жанру ‘Science Fiction’.
  4. Выбрать фильмы жанров ‘Drama’ или ‘Crime’ И выпущенные после 1993 года.
  5. Выбрать фильмы, выпущенные в 2010-х годах (2010-2019 включительно) и с рейтингом IMDb менее 8.7.
  6. Выбрать фильмы, которые являются фильмами жанра ‘Action’, снятыми режиссером ‘Christopher Nolan’, ИЛИ фильмами жанра ‘Comedy’, выпущенными после 2018 года.
  7. Выбрать фильмы, которые НЕ относятся к жанрам (‘Drama’ ИЛИ ‘Comedy’) и имеют рейтинг IMDb выше 8.6.

Вариант 12: База данных рецептов

Вариант 12: База данных рецептов

Сценарий: Управление рецептами, включая тип кухни, время приготовления и уровень сложности.

Схема базы данных:

  • Название таблицы: recipes
  • Названия столбцов и типы данных:
    • recipe_id SERIAL PRIMARY KEY
    • recipe_name VARCHAR(100)
    • cuisine_type VARCHAR(50)
    • cooking_time_minutes INTEGER
    • difficulty_level VARCHAR(50)
    • calories_per_serving INTEGER
  • Данные для вставки:
[
    ('Pasta Carbonara', 'Italian', 30, 'Medium', 600),
    ('Chicken Stir-Fry', 'Asian', 25, 'Easy', 450),
    ('Beef Tacos', 'Mexican', 40, 'Medium', 550),
    ('Vegetable Curry', 'Indian', 50, 'Medium', 500),
    ('French Onion Soup', 'French', 60, 'Hard', 350),
    ('Salmon with Dill Sauce', 'European', 35, 'Easy', 520),
    ('Mushroom Risotto', 'Italian', 55, 'Medium', 700),
    ('Pad Thai', 'Thai', 30, 'Easy', 650),
    ('Chicken Fajitas', 'Mexican', 35, 'Easy', 480),
    ('Lentil Soup', 'Mediterranean', 45, 'Medium', 400)
]

Практические упражнения:

  1. Выбрать рецепты со временем приготовления менее 35 минут и относящиеся к типу кухни ‘Italian’.
  2. Выбрать рецепты типа кухни ‘Mexican’ или с уровнем сложности ‘Easy’.
  3. Выбрать рецепты, которые не относятся к типу кухни ‘Asian’.
  4. Выбрать рецепты типа кухни ‘Italian’ или ‘Mexican’ И с уровнем сложности ‘Medium’.
  5. Выбрать рецепты со временем приготовления более 45 минут и калорийностью на порцию менее 600.
  6. Выбрать рецепты, которые относятся к уровню сложности ‘Easy’ с калорийностью менее 500 ИЛИ к уровню сложности ‘Medium’ типа кухни ‘Italian’.
  7. Выбрать рецепты, которые НЕ относятся к уровням сложности (‘Easy’ ИЛИ ‘Medium’) и имеют время приготовления менее 60 минут.

Вариант 13: База данных автомобилей

Вариант 13: База данных автомобилей

Сценарий: Управление базой данных автомобилей для дилерского центра, включая марку, модель, тип и цену.

Схема базы данных:

  • Название таблицы: vehicles
  • Названия столбцов и типы данных:
    • vehicle_id SERIAL PRIMARY KEY
    • make VARCHAR(50)
    • model VARCHAR(50)
    • vehicle_type VARCHAR(50) (например, ‘Sedan’, ‘SUV’, ‘Truck’)
    • year INTEGER
    • price DECIMAL(8,2)
    • in_stock BOOLEAN
  • Данные для вставки:
[
    ('Toyota', 'Camry', 'Sedan', 2022, 25000.00, TRUE),
    ('Honda', 'CRV', 'SUV', 2023, 32000.00, TRUE),
    ('Ford', 'F-150', 'Truck', 2021, 40000.00, FALSE),
    ('Chevrolet', 'Silverado', 'Truck', 2022, 42000.00, TRUE),
    ('Nissan', 'Altima', 'Sedan', 2023, 26500.00, TRUE),
    ('Jeep', 'Grand Cherokee', 'SUV', 2022, 38000.00, FALSE),
    ('Ram', '1500', 'Truck', 2023, 45000.00, TRUE),
    ('Hyundai', 'Elantra', 'Sedan', 2021, 23000.00, TRUE),
    ('Kia', 'Sportage', 'SUV', 2023, 30000.00, TRUE),
    ('GMC', 'Sierra', 'Truck', 2022, 48000.00, FALSE)
]

Практические упражнения:

  1. Выбрать автомобили типа ‘Sedan’ и ценой менее $26,000.
  2. Выбрать автомобили марки ‘Ford’ или типа ‘SUV’.
  3. Выбрать автомобили, которые не являются типом ‘Truck’.
  4. Выбрать автомобили типа ‘SUV’ или ‘Truck’ И ценой менее $43,000.
  5. Выбрать автомобили 2022 года или новее, которые есть в наличии (in_stock равно true).
  6. Выбрать автомобили, которые либо типа ‘Sedan’ марки ‘Nissan’, ЛИБО типа ‘Truck’ марки ‘Ram’.
  7. Выбрать автомобили, которые НЕ являются (‘Sedan’ ИЛИ ‘SUV’) и есть в наличии.

Вариант 14: База данных событий (Концерты/Шоу)

Вариант 14: База данных событий (Концерты/Шоу)

Сценарий: Управление событиями для платформы продажи билетов, включая тип события, дату и место проведения.

Схема базы данных:

  • Название таблицы: events
  • Названия столбцов и типы данных:
    • event_id SERIAL PRIMARY KEY
    • event_name VARCHAR(100)
    • event_type VARCHAR(50) (например, ‘Concert’, ‘Theater’, ‘Sports’)
    • event_date DATE
    • venue VARCHAR(100)
    • ticket_price DECIMAL(7,2)
    • is_sold_out BOOLEAN
  • Данные для вставки:
[
    ('Rock Fest 2024', 'Concert', '2024-07-15', 'Stadium Arena', 85.00, FALSE),
    ('Hamlet', 'Theater', '2024-06-20', 'Grand Theater', 60.00, FALSE),
    ('Basketball Finals', 'Sports', '2024-05-25', 'Sports Center', 95.00, TRUE),
    ('Jazz Night', 'Concert', '2024-08-10', 'City Hall', 45.50, FALSE),
    ('Opera Carmen', 'Theater', '2024-07-01', 'Opera House', 75.00, TRUE),
    ('Soccer Match', 'Sports', '2024-06-12', 'National Stadium', 70.00, FALSE),
    ('Pop Music Fest', 'Concert', '2024-09-05', 'Park Grounds', 55.00, TRUE),
    ('Comedy Show', 'Theater', '2024-08-15', 'Comedy Club', 35.00, FALSE),
    ('Baseball Game', 'Sports', '2024-07-20', 'Baseball Field', 50.00, TRUE),
    ('Classical Music Concert', 'Concert', '2024-10-01', 'Concert Hall', 52.00, FALSE)
]

Практические упражнения:

  1. Выбрать события типа ‘Concert’ с ценой билета менее $60.
  2. Выбрать события типа ‘Theater’ или с датой ‘2024-07-15’.
  3. Выбрать события, которые не являются типом ‘Sports’.
  4. Выбрать события типа ‘Concert’ или ‘Theater’ И ценой билета более $50.
  5. Выбрать события в июле 2024 года (event_date в июле 2024 года), которые не распроданы.
  6. Выбрать события, которые являются либо типом ‘Concert’ в ‘Stadium Arena’, ЛИБО типом ‘Theater’ в ‘Grand Theater’.
  7. Выбрать события, которые НЕ являются (‘Concert’ ИЛИ ‘Sports’) и не распроданы.

Вариант 15: База данных онлайн-игры (Игроки/Предметы)

Вариант 15: База данных онлайн-игры (Игроки/Предметы)

Сценарий: Управление данными игроков и внутриигровыми предметами для онлайн-игры.

Схема базы данных:

  • Название таблицы: game_items
  • Названия столбцов и типы данных:
    • item_id SERIAL PRIMARY KEY
    • item_name VARCHAR(100)
    • item_type VARCHAR(50) (например, ‘Weapon’, ‘Armor’, ‘Consumable’)
    • rarity VARCHAR(50) (например, ‘Common’, ‘Uncommon’, ‘Rare’, ‘Epic’)
    • level_requirement INTEGER
    • price INTEGER
    • is_tradable BOOLEAN
  • Данные для вставки:
[
    ('Iron Sword', 'Weapon', 'Common', 1, 100, TRUE),
    ('Leather Armor', 'Armor', 'Common', 1, 150, TRUE),
    ('Health Potion', 'Consumable', 'Common', 1, 20, TRUE),
    ('Steel Sword', 'Weapon', 'Uncommon', 5, 500, TRUE),
    ('Chainmail Armor', 'Armor', 'Uncommon', 5, 750, TRUE),
    ('Mana Potion', 'Consumable', 'Uncommon', 5, 50, TRUE),
    ('Mythril Sword', 'Weapon', 'Rare', 10, 2000, FALSE),
    ('Plate Armor', 'Armor', 'Rare', 10, 3000, FALSE),
    ('Elixir of Strength', 'Consumable', 'Rare', 10, 200, FALSE),
    ('Dragon Scale Armor', 'Armor', 'Epic', 15, 10000, FALSE)
]

Практические упражнения:

  1. Выбрать предметы типа ‘Weapon’ с ценой менее 600.
  2. Выбрать предметы типа ‘Armor’ или с требованием к уровню 1.
  3. Выбрать предметы, которые не относятся к типу ‘Consumable’.
  4. Выбрать предметы типа ‘Weapon’ или ‘Armor’ И редкостью ‘Uncommon’ или лучше (‘Uncommon’, ‘Rare’, ‘Epic’). (Для простоты предположим, что ‘Uncommon’ лучше, чем ‘Common’, и т. д.)
  5. Выбрать предметы с требованием к уровню больше 5, которые можно обменивать (is_tradable равно true).
  6. Выбрать предметы, которые являются либо типом ‘Weapon’ с редкостью ‘Rare’, ЛИБО типом ‘Armor’ с требованием к уровню 10.
  7. Выбрать предметы, которые НЕ являются (‘Weapon’ ИЛИ ‘Consumable’) и которые можно обменивать.

Вариант 16: База данных отслеживания фитнеса (Пользователи/Активности)

Вариант 16: База данных отслеживания фитнеса (Пользователи/Активности)

Сценарий: Управление данными о фитнесе пользователей, включая тип активности, продолжительность и сожженные калории.

Схема базы данных:

  • Название таблицы: fitness_activities
  • Названия столбцов и типы данных:
    • activity_id SERIAL PRIMARY KEY
    • user_id INTEGER
    • activity_type VARCHAR(50) (например, ‘Running’, ‘Swimming’, ‘Cycling’)
    • duration_minutes INTEGER
    • distance_km DECIMAL(4,2)
    • calories_burned INTEGER
    • activity_date DATE
  • Данные для вставки:
[
    (1, 'Running', 30, 5.0, 300, '2024-03-10'),
    (1, 'Swimming', 45, 1.5, 400, '2024-03-12'),
    (2, 'Cycling', 60, 20.0, 500, '2024-03-11'),
    (2, 'Running', 40, 6.5, 380, '2024-03-13'),
    (3, 'Yoga', 60, 0.0, 200, '2024-03-10'),
    (3, 'Walking', 90, 7.0, 350, '2024-03-14'),
    (1, 'Weightlifting', 60, 0.0, 250, '2024-03-15'),
    (2, 'Hiking', 120, 8.0, 700, '2024-03-16'),
    (3, 'Pilates', 45, 0.0, 180, '2024-03-11'),
    (4, 'Running', 50, 8.0, 450, '2024-03-17')
]

Практические упражнения:

  1. Выбрать активности типа ‘Running’ продолжительностью более 45 минут.
  2. Выбрать активности пользователя с ID 1 или типа ‘Swimming’.
  3. Выбрать активности, которые не относятся к типу ‘Yoga’.
  4. Выбрать активности типа ‘Running’ или ‘Cycling’ И с количеством сожженных калорий больше 400.
  5. Выбрать активности продолжительностью менее 60 минут, которые произошли после ‘2024-03-12’.
  6. Выбрать активности, которые либо относятся к типу ‘Running’ с дистанцией более 7 км, ЛИБО к типу ‘Cycling’ с продолжительностью более 50 минут.
  7. Выбрать активности, которые НЕ относятся к типам (‘Running’ ИЛИ ‘Walking’) и с количеством сожженных калорий менее 400.

Вариант 17: База данных ресторана (Пункты меню)

Вариант 17: База данных ресторана (Пункты меню)

Сценарий: Управление пунктами меню ресторана, включая категорию, цену и диетические ограничения.

Схема базы данных:

  • Название таблицы: menu_items
  • Названия столбцов и типы данных:
    • item_id SERIAL PRIMARY KEY
    • item_name VARCHAR(100)
    • category VARCHAR(50) (например, ‘Appetizer’, ‘Main Course’, ‘Dessert’, ‘Drink’)
    • price DECIMAL(5,2)
    • is_vegetarian BOOLEAN
    • is_gluten_free BOOLEAN
  • Данные для вставки:
[
    ('Caesar Salad', 'Appetizer', 8.99, TRUE, FALSE),
    ('Steak Frites', 'Main Course', 25.50, FALSE, FALSE),
    ('Chocolate Cake', 'Dessert', 7.25, TRUE, FALSE),
    ('Iced Tea', 'Drink', 2.50, TRUE, TRUE),
    ('Mushroom Soup', 'Appetizer', 6.75, TRUE, TRUE),
    ('Grilled Salmon', 'Main Course', 22.00, FALSE, TRUE),
    ('Apple Pie', 'Dessert', 6.50, TRUE, FALSE),
    ('Lemonade', 'Drink', 3.00, TRUE, TRUE),
    ('Pasta Primavera', 'Main Course', 18.75, TRUE, FALSE),
    ('Cheesecake', 'Dessert', 7.99, TRUE, FALSE)
]

Практические упражнения:

  1. Выбрать пункты меню в категории ‘Appetizer’ с ценой менее $8.00.
  2. Выбрать пункты меню в категории ‘Dessert’ или вегетарианские (is_vegetarian равно true).
  3. Выбрать пункты меню, которые не относятся к категории ‘Drink’.
  4. Выбрать пункты меню категории ‘Appetizer’ или ‘Dessert’ И вегетарианские.
  5. Выбрать пункты меню с ценой более $20.00, которые не содержат глютен (is_gluten_free равно true).
  6. Выбрать пункты меню, которые либо являются пунктами ‘Main Course’ по цене менее $20, ЛИБО пунктами ‘Appetizer’, которые не содержат глютен.
  7. Выбрать пункты меню, которые НЕ относятся к категориям (‘Appetizer’ ИЛИ ‘Dessert’) и являются вегетарианскими.

Вариант 18: База данных недвижимости (Объекты)

Вариант 18: База данных недвижимости (Объекты)

Сценарий: Управление списками объектов недвижимости, включая тип недвижимости, местоположение и цену.

Схема базы данных:

  • Название таблицы: real_estate_properties
  • Названия столбцов и типы данных:
    • property_id SERIAL PRIMARY KEY
    • property_type VARCHAR(50) (например, ‘House’, ‘Apartment’, ‘Condo’)
    • city VARCHAR(50)
    • bedrooms INTEGER
    • bathrooms DECIMAL(2,1)
    • price DECIMAL(9,2)
    • is_available BOOLEAN
  • Данные для вставки:
[
    ('House', 'New York', 3, 2.5, 1200000.00, TRUE),
    ('Apartment', 'Los Angeles', 2, 1.0, 750000.00, TRUE),
    ('Condo', 'Chicago', 2, 2.0, 550000.00, FALSE),
    ('House', 'Houston', 4, 3.0, 900000.00, TRUE),
    ('Apartment', 'Miami', 1, 1.0, 400000.00, TRUE),
    ('Condo', 'San Francisco', 1, 1.5, 950000.00, FALSE),
    ('House', 'Seattle', 3, 2.0, 1100000.00, TRUE),
    ('Apartment', 'Boston', 2, 1.5, 680000.00, TRUE),
    ('Condo', 'Denver', 2, 2.0, 600000.00, TRUE),
    ('House', 'Austin', 4, 3.5, 850000.00, FALSE)
]

Практические упражнения:

  1. Выбрать объекты типа ‘Apartment’ в ‘Los Angeles’ с ценой менее $800,000.
  2. Выбрать объекты в ‘New York’ или с 3 и более спальнями.
  3. Выбрать объекты, которые не относятся к типу ‘Condo’.
  4. Выбрать объекты типа ‘House’ или ‘Condo’ И ценой менее $1,000,000.
  5. Выбрать объекты с 2 и более ванными комнатами, которые доступны (is_available равно true).
  6. Выбрать объекты, которые либо относятся к типу ‘Apartment’ в ‘Boston’, ЛИБО к типу ‘House’ в ‘Seattle’.
  7. Выбрать объекты, которые НЕ относятся к типам (‘Apartment’ ИЛИ ‘Condo’) и доступны.

Инструкции по сдаче

Playful GIF