Создание запросов с использованием операторов GROUP BY и ORDER BY. Создание запросов с оператором HAVING.


Вариант 1: Продажи в интернет-магазине книг

Схема:

CREATE TABLE orders (
    order_id INTEGER PRIMARY KEY,
    customer_id INTEGER,
    order_date DATE,
    book_title VARCHAR(255),
    genre VARCHAR(255),
    quantity INTEGER,
    price_per_unit NUMERIC(10, 2)
);

INSERT INTO orders (order_id, customer_id, order_date, book_title, genre, quantity, price_per_unit) VALUES
(1, 101, '2024-01-15', 'The Mystery of the Lost Key', 'Mystery', 2, 15.99),
(2, 102, '2024-01-20', 'Space Odyssey 2045', 'Science Fiction', 1, 24.99),
(3, 101, '2024-02-05', 'Cooking with Passion', 'Cookbook', 3, 12.50),
(4, 103, '2024-02-10', 'The Mystery of the Lost Key', 'Mystery', 1, 15.99),
(5, 102, '2024-02-15', 'Learn Python in 30 Days', 'Programming', 2, 19.99),
(6, 104, '2024-02-20', 'Space Odyssey 2045', 'Science Fiction', 1, 24.99),
(7, 101, '2024-03-01', 'The History of Rome', 'History', 1, 9.99),
(8, 103, '2024-03-05', 'Cooking with Passion', 'Cookbook', 2, 12.50),
(9, 105, '2024-03-10', 'Quantum Physics for Beginners', 'Science', 1, 29.99),
(10, 104, '2024-03-12', 'Business Strategy Masterclass', 'Business', 1, 39.99);

Задания:

  1. Вывести все уникальные жанры из таблицы orders в алфавитном порядке.
  2. Вывести все названия книг, содержащие слово “the” (без учета регистра), в порядке названий.
  3. Вывести жанры из таблицы orders, названия книг которых содержат слово “of”, в алфавитном порядке.
  4. Вывести все названия книг, отсортированные по названию книги в порядке убывания.
  5. Найти жанры, содержащие букву ‘e’, учитывая только книги с price_per_unit выше 16.00. Отсортировать результат по жанру.
  6. Вывести все уникальные названия книг, отсортированные по длине названия (от самого короткого к самому длинному).
  7. Вывести все жанры, которые заканчиваются на букву “e”, в алфавитном порядке.
  8. Показать все названия книг, которые содержат букву “a” и букву “s”, в порядке названий.
  9. Вывести жанры, в которых названия книг содержат цифры, в алфавитном порядке.
  10. Вывести названия книг, которые начинаются с ‘The’ и содержат ‘Mystery’, отсортированные по price_per_unit в порядке убывания.

Вариант 2: Запись на университетские курсы

Схема:

CREATE TABLE courses (
    course_id INTEGER PRIMARY KEY,
    course_name VARCHAR(255),
    department VARCHAR(255),
    credits INTEGER,
    grade CHAR(1)
);
INSERT INTO courses (course_id, course_name, department, credits, grade) VALUES
(101, 'Introduction to Programming', 'Computer Science', 3, 'A'),
(102, 'Calculus I', 'Mathematics', 4, 'B'),
(103, 'World History', 'History', 3, 'A'),
(104, 'Linear Algebra', 'Mathematics', 3, 'C'),
(105, 'Data Structures and Algorithms', 'Computer Science', 4, 'A'),
(106, 'Probability and Statistics', 'Statistics', 3, 'B'),
(107, 'Introduction to Programming', 'Computer Science', 3, 'B');

Задания:

  1. Вывести все уникальные названия факультетов (department) из таблицы courses в алфавитном порядке.
  2. Вывести названия курсов, содержащие слово “and”, отсортированные по названию курса.
  3. Вывести названия факультетов, предлагающих курсы, названия которых содержат “Pro”, в алфавитном порядке.
  4. Вывести названия курсов с оценкой ‘A’, отсортировав по названию в порядке убывания.
  5. Найти названия курсов, которые заканчиваются на ‘s’, учитывая только курсы с количеством кредитов (credits), равным 3. Отсортировать результат в алфавитном порядке.
  6. Вывести все уникальные названия факультетов, отсортированные по длине названия факультета (от самого длинного к самому короткому).
  7. Вывести факультеты, которые начинаются с буквы “C”, в алфавитном порядке.
  8. Показать названия курсов, содержащие букву ‘i’ как минимум дважды, отсортированные по названию курса.
  9. Вывести факультеты, в которых названия курсов включают слово ‘to’, в алфавитном порядке.
  10. Найти названия курсов, начинающиеся с ‘I’ и имеющие оценку ‘B’, отсортировать по credits.

Вариант 3: Управление проектами сотрудников

Схема:

CREATE TABLE projects (
    project_id INTEGER PRIMARY KEY,
    project_name VARCHAR(255),
    department VARCHAR(255),
    start_date DATE,
    end_date DATE,
    budget NUMERIC(12, 2)
);
INSERT INTO projects (project_id, project_name, department, start_date, end_date, budget) VALUES
(101, 'Website Redesign', 'IT', '2024-01-15', '2024-03-15', 50000.00),
(102, 'New Marketing Campaign', 'Marketing', '2024-02-01', '2024-04-30', 75000.00),
(103, 'Database Migration', 'IT', '2024-03-01', '2024-05-31', 100000.00),
(104, 'Financial Reporting System', 'Finance', '2024-01-01', '2024-06-30', 120000.00),
(105, 'New Database Design', 'IT', '2024-04-01', '2024-06-01', 90000.00);

Задания:

  1. Вывести все уникальные названия отделов (department) из таблицы projects в порядке убывания (по алфавиту).
  2. Вывести названия проектов, которые начинаются с “New”, отсортированные по названию проекта.
  3. Вывести отделы, в которых есть проекты с названиями, содержащими “Data”.
  4. Вывести названия проектов, отсортировав по названию проекта.
  5. Вывести названия проектов, бюджет которых превышает 60000, и которые заканчиваются на ‘n’, отсортировав результат в алфавитном порядке.
  6. Вывести все уникальные названия отделов, отсортированные по длине названия отдела (от самого короткого к самому длинному).
  7. Вывести названия проектов, которые содержат слово “New” или слово “System”, отсортированные по названию проекта.
  8. Показать отделы, в которых есть проекты, названия которых содержат букву ‘b’ и букву ‘e’, в алфавитном порядке.
  9. Вывести отделы, где названия проектов содержат пробел, в алфавитном порядке.
  10. Вывести названия проектов, дата начала которых позднее ‘2024-02-01’ и название содержит ‘Data’, отсортировав по budget в порядке убывания.

Вариант 4: Сервис потоковой музыки

Схема:

CREATE TABLE songs (
    song_id INTEGER PRIMARY KEY,
    song_name VARCHAR(255),
    artist_name VARCHAR(255),
    genre VARCHAR(255),
    album_name VARCHAR(255),
    duration_seconds INTEGER
);

INSERT INTO songs (song_id, song_name, artist_name, genre, album_name, duration_seconds) VALUES
(1, 'Come Together', 'The Beatles', 'Rock', 'Abbey Road', 259),
(2, 'Something', 'The Beatles', 'Rock', 'Abbey Road', 182),
(3, 'So What', 'Miles Davis', 'Jazz', 'Kind of Blue', 556),
(4, 'Blue in Green', 'Miles Davis', 'Jazz', 'Kind of Blue', 337),
(5, 'Stairway to Heaven', 'Led Zeppelin', 'Rock', 'Led Zeppelin IV', 482),
(6, 'Black Dog', 'Led Zeppelin', 'Rock', 'Led Zeppelin IV', 296),
(7, 'Blank Space', 'Taylor Swift', 'Pop', '1989', 231),
(8, 'Shake It Off', 'Taylor Swift', 'Pop', '1989', 219),
(9, 'Alright', 'Kendrick Lamar', 'Hip Hop', 'To Pimp a Butterfly', 219),
(10, 'King Kunta', 'Kendrick Lamar', 'Hip Hop', 'To Pimp a Butterfly', 234);

Задания:

  1. Вывести все уникальные жанры из таблицы songs в алфавитном порядке.
  2. Вывести все названия альбомов, отсортированные по названию альбома в порядке убывания.
  3. Вывести жанры песен, названия которых содержат “Blue”.
  4. Вывести названия песен исполнителя ‘The Beatles’, отсортировав по названию песни в порядке убывания.
  5. Найти названия альбомов, содержащие слово “of”, в алфавитном порядке.
  6. Вывести все уникальные имена исполнителей, отсортированные по длине имени исполнителя (от самого короткого к самому длинному).
  7. Вывести жанры, содержащие букву “o” и букву “p”, в алфавитном порядке.
  8. Показать названия песен, которые содержат символ ‘k’ как минимум дважды, отсортированные по названию песни.
  9. Вывести имена исполнителей, у которых название песни содержит ‘So’, в алфавитном порядке.
  10. Вывести названия песен, у которых duration_seconds больше 250 и которые содержат слово ‘Black’, отсортировав по duration_seconds.

Вариант 5: Система управления библиотекой

Схема:

CREATE TABLE books (
    book_id INTEGER PRIMARY KEY,
    title VARCHAR(255),
    author VARCHAR(255),
    genre VARCHAR(255),
    publication_year INTEGER,
  	loaned BOOLEAN
);
INSERT INTO books (book_id, title, author, genre, publication_year, loaned) VALUES
(1, 'The Lord of the Rings', 'J.R.R. Tolkien', 'Fantasy', 1954, TRUE),
(2, 'Pride and Prejudice', 'Jane Austen', 'Romance', 1813, TRUE),
(3, '1984', 'George Orwell', 'Dystopian', 1949, TRUE),
(4, 'To Kill a Mockingbird', 'Harper Lee', 'Fiction', 1960, FALSE),
(5, 'The Catcher in the Rye', 'J.D. Salinger', 'Fiction', 1951, TRUE);

Задания:

  1. Вывести уникальные жанры из таблицы books в порядке убывания (по алфавиту).
  2. Вывести названия книг, опубликованных до 1950 года, отсортированные по году публикации.
  3. Вывести жанры книг, названия которых содержат слово “the”, в алфавитном порядке.
  4. Вывести имена авторов, отсортировав по имени автора.
  5. Вывести все названия книг, которые в настоящее время выданы (loaned равно TRUE), и название которых заканчивается на ‘e’, отсортировав по названию.
  6. Вывести все уникальные имена авторов, отсортированные по длине имени автора (от самого длинного к самому короткому).
  7. Вывести жанры, которые начинаются с буквы “F” или с буквы “R”, в алфавитном порядке.
  8. Показать названия книг, которые содержат букву “a” и в настоящее время выданы, отсортировав по названию.
  9. Вывести жанры книг, названия которых содержат ‘and’, отсортировав по жанру.
  10. Вывести названия книг, опубликованных после 1950 года, и имя автора которых начинается с ‘J’, отсортировав по году публикации.

Вариант 6: Каталог товаров для электронной коммерции

Схема:

CREATE TABLE products (
    product_id INTEGER PRIMARY KEY,
    product_name VARCHAR(255),
    category_name VARCHAR(255),
    price NUMERIC(10, 2),
    stock_quantity INTEGER
);
INSERT INTO products (product_id, product_name, category_name, price, stock_quantity) VALUES
(1, 'Laptop', 'Electronics', 1200.00, 50),
(2, 'T-Shirt', 'Clothing', 25.00, 200),
(3, 'The Hitchhiker''s Guide to the Galaxy', 'Books', 15.00, 100),
(4, 'Coffee Maker', 'Home & Kitchen', 75.00, 75),
(5, 'Smartphone', 'Electronics', 800.00, 100),
(6, 'Jeans', 'Clothing', 50.00, 150),
(7, 'A Brief History of Time', 'Books', 20.00, 80),
(8, 'Blender', 'Home & Kitchen', 100.00, 60);

Задания:

  1. Вывести все уникальные названия категорий из таблицы products в порядке убывания (по алфавиту).
  2. Вывести названия товаров, цена которых больше $50, отсортировав по названию товара.
  3. Вывести названия категорий, в которых есть товары с названиями, содержащими “of”.
  4. Вывести названия товаров из категории ‘Electronics’, отсортировав по названию товара в порядке убывания.
  5. Найти названия товаров, цена которых меньше 1000 и которые содержат слово ‘the’, отсортировав по названию.
  6. Вывести все уникальные названия категорий, отсортированные по длине названия категории (от самого короткого к самому длинному).
  7. Вывести названия категорий содержащих ‘c’ и ‘n’, отсортированных в алфавитном порядке.
  8. Вывести все названия товаров, которые начинаются с буквы ‘B’, отсортированные по названию товара.
  9. Вывести названия категорий, где названия товаров содержат символ ‘p’ как минимум дважды, отсортированных по названию категории.
  10. Найти названия товаров, у которых stock_quantity больше 80 и которые содержат ‘er’, отсортировав по price.

Вариант 7: Позиции меню ресторана

Схема:

CREATE TABLE menu_items (
    item_id INTEGER PRIMARY KEY,
    item_name VARCHAR(255),
    category VARCHAR(255),
    price NUMERIC(8, 2),
    is_vegetarian BOOLEAN,
    spice_level VARCHAR(10)  -- 'Mild', 'Medium', 'Hot', 'None'
);

INSERT INTO menu_items (item_id, item_name, category, price, is_vegetarian, spice_level) VALUES
(1, 'Chicken Tikka Masala', 'Main Course', 15.99, FALSE, 'Medium'),
(2, 'Vegetable Biryani', 'Main Course', 12.99, TRUE, 'Mild'),
(3, 'Caesar Salad', 'Appetizer', 8.99, TRUE, 'None'),
(4, 'Spicy Chicken Wings', 'Appetizer', 10.99, FALSE, 'Hot'),
(5, 'Margherita Pizza', 'Main Course', 14.99, TRUE, 'None'),
(6, 'Beef Burger', 'Main Course', 13.99, FALSE, 'None'),
(7, 'Chocolate Brownie', 'Dessert', 7.99, TRUE, 'None'),
(8, 'Mango Lassi', 'Drink', 4.99, TRUE, 'None'),
(9, 'Palak Paneer', 'Main Course', 13.49, TRUE, 'Medium');

Задания:

  1. Вывести все уникальные категории из таблицы menu_items в алфавитном порядке.
  2. Вывести названия блюд, которые являются вегетарианскими, отсортированные по цене (от самой высокой к самой низкой).
  3. Найти категории блюд, названия которых содержат “Chicken”, в алфавитном порядке.
  4. Вывести названия блюд из категории ‘Main Course’, отсортировав по названию в порядке убывания.
  5. Вывести все названия блюд с уровнем остроты spice_level ‘None’, отсортированные по длине названия.
  6. Вывести все уникальные названия категорий, отсортированные по длине названия категории (от самого длинного к самому короткому).
  7. Вывести категории, которые начинаются с ‘D’ или заканчиваются на ‘r’, в алфавитном порядке.
  8. Показать названия блюд, которые не являются вегетарианскими и цена которых больше 12.00, отсортированные по названию блюда.
  9. Вывести категории, в которых названия блюд содержат ‘ee’, отсортированные по категории.
  10. Вывести названия блюд с ценой (price) меньше 10 и уровнем остроты (spice_level) ‘Hot’, отсортированные по цене в порядке убывания.

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

Схема:

CREATE TABLE movies (
    movie_id INTEGER PRIMARY KEY,
    title VARCHAR(255),
    genre VARCHAR(255),
    release_year INTEGER,
    rating NUMERIC(3, 1),
    director VARCHAR(255)
);
INSERT INTO movies (movie_id, title, genre, release_year, rating, director) VALUES
    (1, 'The Shawshank Redemption', 'Drama', 1994, 9.3, 'Frank Darabont'),
    (2, 'The Godfather', 'Crime', 1972, 9.2, 'Francis Ford Coppola'),
    (3, 'The Dark Knight', 'Action', 2008, 9.0, 'Christopher Nolan'),
    (4, 'Pulp Fiction', 'Crime', 1994, 8.9, 'Quentin Tarantino'),
    (5, 'The Lord of the Rings: The Return of the King', 'Fantasy', 2003, 9.0, 'Peter Jackson'),
    (6, 'Schindler''s List', 'Drama', 1993, 8.9, 'Steven Spielberg'),
    (7, 'Fight Club', 'Drama', 1999, 8.8, 'David Fincher'),
    (8, 'Forrest Gump', 'Drama', 1994, 8.8, 'Robert Zemeckis'),
    (9, 'Inception', 'Action', 2010, 8.8, 'Christopher Nolan');

Задания:

  1. Вывести все уникальные жанры в алфавитном порядке.
  2. Вывести названия фильмов, выпущенных в 1994 году, отсортированные по названию.
  3. Вывести жанры фильмов, названия которых содержат слово “The”, в алфавитном порядке.
  4. Вывести названия фильмов с рейтингом выше 9.0, отсортированные по названию.
  5. Найти названия фильмов, год выпуска которых позже 2000, и рейтинг меньше 9.0, отсортированные по названию в порядке убывания.
  6. Вывести все уникальные имена режиссеров, отсортированные по длине имени режиссера (от самого длинного к самому короткому).
  7. Вывести жанры, которые заканчиваются на букву “e”, в алфавитном порядке.
  8. Показать названия фильмов, содержащие букву ‘o’ как минимум дважды, отсортированные по названию.
  9. Вывести жанры, где название фильма включает ‘The’ и ‘of’, в алфавитном порядке по жанру.
  10. Найти названия фильмов, выпущенных до 2000 года и снятых режиссером, чье имя начинается с ‘F’, отсортированные по rating в порядке убывания.

Вариант 9: Посты в социальной сети

Схема:

CREATE TABLE posts (
    post_id INTEGER PRIMARY KEY,
    username VARCHAR(255),
    post_text TEXT,
    post_date TIMESTAMP,
    likes INTEGER,
    category VARCHAR(50)
);
INSERT INTO posts (post_id, username, post_text, post_date, likes, category) VALUES
(1, 'user123', 'Just had the best day ever!', '2024-03-08 10:00:00', 50, 'Personal'),
(2, 'foodie456', 'This new restaurant is amazing! #foodie #yum', '2024-03-08 12:30:00', 120, 'Food'),
(3, 'travelbug789', 'Exploring the beautiful beaches of Bali. #travel', '2024-03-08 15:45:00', 200, 'Travel'),
(4, 'user123', 'Feeling grateful for my friends and family.', '2024-03-09 09:00:00', 75, 'Personal'),
(5, 'techguru101', 'The latest smartphone release is impressive! #tech', '2024-03-09 11:15:00', 90, 'Technology'),
(6, 'foodie456', 'Made a delicious pasta dish tonight. #cooking', '2024-03-09 18:00:00', 150, 'Food'),
(7, 'bookworm222', 'Just finished reading a great novel. #books', '2024-03-10 08:30:00', 60, 'Books');

Задания:

  1. Вывести все уникальные имена пользователей в алфавитном порядке.
  2. Вывести тексты постов, у которых более 100 лайков, отсортированные по дате публикации (сначала самые новые).
  3. Вывести категории, в которых есть посты, содержащие хэштег “#foodie”, отсортированные по категории.
  4. Вывести текст постов от пользователя ‘user123’, отсортировав по тексту поста.
  5. Найти текст постов, включающий слово ‘the’ (без учета регистра), отсортировав результат в алфавитном порядке.
  6. Вывести все уникальные имена пользователей, отсортированные по длине имени пользователя (от самого короткого к самому длинному).
  7. Вывести категории, содержащие букву ‘o’ как минимум дважды, в алфавитном порядке.
  8. Показать имена пользователей, у которых есть посты с более чем 70 лайками и чьи посты содержат слово ‘the’, отсортированные по имени пользователя.
  9. Вывести категории, в которых имена пользователей начинаются с ‘f’, отсортированные по категории.
  10. Вывести тексты постов с количеством likes больше 100, опубликованных после ‘2024-03-08 12:00:00’, отсортировать по likes в порядке убывания.

Вариант 10: Система бронирования авиабилетов

Схема:

CREATE TABLE flights (
    flight_id INTEGER PRIMARY KEY,
    flight_number VARCHAR(10),
    departure_city VARCHAR(255),
    arrival_city VARCHAR(255),
    departure_time TIMESTAMP,
    arrival_time TIMESTAMP,
    price NUMERIC(10, 2)
);

INSERT INTO flights (flight_id, flight_number, departure_city, arrival_city, departure_time, arrival_time, price) VALUES
(1, 'AA123', 'New York', 'Los Angeles', '2024-04-01 08:00:00', '2024-04-01 11:00:00', 300.00),
(2, 'UA456', 'Chicago', 'Miami', '2024-04-01 10:00:00', '2024-04-01 14:00:00', 250.00),
(3, 'DL789', 'Atlanta', 'Dallas', '2024-04-01 12:00:00', '2024-04-01 13:00:00', 150.00),
(4, 'AA321', 'Los Angeles', 'New York', '2024-04-01 14:00:00', '2024-04-01 21:00:00', 350.00),
(5, 'UA654', 'Miami', 'Chicago', '2024-04-01 16:00:00', '2024-04-01 18:00:00', 200.00),
(6, 'DL987', 'Dallas', 'Atlanta', '2024-04-01 18:00:00', '2024-04-01 19:00:00', 175.00);

Задания:

  1. Вывести все уникальные города отправления в алфавитном порядке.
  2. Вывести номера рейсов, стоимость которых меньше $200, отсортировав по номеру рейса.
  3. Вывести города отправления, из которых есть рейсы, прибывающие в “New York”.
  4. Вывести города прибытия рейсов, вылетающих из ‘Chicago’, отсортировав по городу прибытия в порядке убывания.
  5. Найти города отправления, у которых номера рейсов начинаются с ‘DL’, отсортировав по городу.
  6. Вывести все уникальные города прибытия, отсортированные по длине названия города (от самого короткого к самому длинному).
  7. Вывести города отправления, содержащие букву ‘o’ и букву ‘k’, в алфавитном порядке.
  8. Показать номера рейсов, у которых город отправления совпадает с городом прибытия.
  9. Вывести города прибытия, если город отправления содержит ‘las’, отсортировав по названию города прибытия.
  10. Вывести номера рейсов, вылетающих до ‘2024-04-01 12:00:00’ и стоимостью выше 200, отсортировать по price в порядке убывания.

Вариант 11: Статистика спортивной команды

Схема:

CREATE TABLE game_results (
    game_id INTEGER PRIMARY KEY,
    team_name VARCHAR(255),
    opponent_name VARCHAR(255),
    game_date DATE,
    points_scored INTEGER,
    points_allowed INTEGER,
    result CHAR(1) -- 'W' - победа, 'L' - проигрыш
);
INSERT INTO game_results (game_id, team_name, opponent_name, game_date, points_scored, points_allowed, result) VALUES
(1, 'Lakers', 'Celtics', '2024-03-01', 100, 95, 'W'),
(2, 'Bulls', 'Heat', '2024-03-01', 88, 92, 'L'),
(3, 'Lakers', 'Warriors', '2024-03-05', 110, 105, 'W'),
(4, 'Celtics', 'Bulls', '2024-03-08', 98, 90, 'W'),
(5, 'Heat', 'Lakers', '2024-03-10', 105, 102, 'W'),
(6, 'Warriors', 'Bulls', '2024-03-12', 115, 100, 'W'),
(7, 'Bulls', 'Lakers', '2024-03-15', 95, 98, 'L');

Задания:

  1. Вывести все уникальные названия команд в алфавитном порядке.
  2. Вывести названия команд-соперников в играх, где team_name - ‘Lakers’, отсортировав по названию соперника.
  3. Вывести команды, которые играли против ‘Bulls’, отсортировав по названию команды.
  4. Вывести названия команд соперников для команды ‘Lakers’, отсортированных по названию соперника в обратном алфавитном порядке.
  5. Вывести все названия команд, которые выиграли игру (result = ‘W’), отсортировав по названию.
  6. Вывести все уникальные названия команд-соперников, отсортированные по длине названия соперника (от самого длинного к самому короткому).
  7. Вывести названия команд, содержащих букву ‘s’ как минимум два раза, отсортировав по алфавиту.
  8. Показать названия команд-соперников в играх, где team_name проиграла (result = ‘L’) и набрала более 90 очков, отсортировав по названию соперника.
  9. Вывести команды, у которых название команды-соперника содержит буквы ‘c’ и ‘s’, в алфавитном порядке.
  10. Вывести названия команд, у которых points_allowed меньше 100 и игра была после ‘2024-03-05’, отсортировать по points_scored.

Вариант 12: Отзывы покупателей

Схема:

CREATE TABLE reviews (
    review_id INTEGER PRIMARY KEY,
    product_name VARCHAR(255),
    customer_name VARCHAR(255),
    review_text TEXT,
    rating INTEGER,  --  от 1 до 5 звезд
    review_date DATE
);

INSERT INTO reviews (review_id, product_name, customer_name, review_text, rating, review_date) VALUES
(1, 'Laptop X', 'John Doe', 'Great laptop, fast and reliable!', 5, '2024-03-01'),
(2, 'Wireless Mouse', 'Jane Smith', 'Decent mouse, but the scroll wheel is a bit stiff.', 3, '2024-03-05'),
(3, 'Laptop X', 'Alice Johnson', 'Excellent performance, highly recommend!', 5, '2024-03-08'),
(4, 'Office Chair', 'Bob Williams', 'Comfortable chair, good for long hours.', 4, '2024-03-10'),
(5, 'Wireless Mouse', 'John Doe', 'Good value for the price.', 4, '2024-03-12'),
(6, 'Laptop X', 'Eva Green', 'The battery life is amazing!', 5, '2024-03-15');

Задания:

  1. Вывести все уникальные названия продуктов в алфавитном порядке.
  2. Вывести имена покупателей, поставивших оценку 5, отсортировав по имени.
  3. Вывести названия продуктов, в отзывах к которым содержится слово “good” (без учета регистра), в алфавитном порядке.
  4. Вывести имена покупателей, оставивших отзыв на ‘Laptop X’, отсортировав по имени покупателя.
  5. Найти имена покупателей, которые оставили отзывы на продукты, названия которых содержат ‘less’, отсортировав по имени в порядке убывания.
  6. Вывести все уникальные имена покупателей, отсортированные по длине имени (от самого короткого к самому длинному).
  7. Вывести названия продуктов, содержащие букву ‘e’ как минимум 3 раза, в алфавитном порядке.
  8. Показать имена покупателей, которые поставили оценку меньше 4 и текст отзыва которых содержит слово “but”, отсортировав по имени покупателя.
  9. Вывести названия продуктов, у которых имя покупателя начинается с ‘J’, отсортировав по продукту.
  10. Вывести имена покупателей, оставивших отзыв после ‘2024-03-10’ и с rating равным 5, отсортировать по имени покупателя.

Вариант 13: Посты в блоге

Схема:

CREATE TABLE blog_posts (
    post_id INTEGER PRIMARY KEY,
    title VARCHAR(255),
    author VARCHAR(255),
    category VARCHAR(100),
    publication_date DATE,
    content TEXT
);

INSERT INTO blog_posts (post_id, title, author, category, publication_date, content) VALUES
(1, 'The Future of AI', 'John Smith', 'Technology', '2024-01-15', 'Artificial intelligence is rapidly evolving...'),
(2, '10 Delicious Recipes', 'Jane Doe', 'Food', '2024-01-20', 'These recipes are easy to follow and delicious...'),
(3, 'Traveling on a Budget', 'Mike Brown', 'Travel', '2024-02-01', 'Traveling doesn''t have to be expensive...'),
(4, 'The Importance of Cybersecurity', 'Sarah Lee', 'Technology', '2024-02-10', 'Protecting your data is crucial...'),
(5, 'Healthy Eating Habits', 'David Wilson', 'Health', '2024-02-20', 'Making small changes can have a big impact...'),
(6, 'Exploring National Parks', 'Emily Davis', 'Travel', '2024-03-01', 'National parks offer stunning landscapes...'),
(7, 'Quick and Easy Recipes', 'Jane Doe', 'Food', '2024-03-05', 'These recipes are perfect for busy weeknights...');

Задания:

  1. Вывести всех уникальных авторов в алфавитном порядке.
  2. Вывести названия постов, опубликованных в феврале (с 2024-02-01 по 2024-02-29), отсортированные по дате публикации.
  3. Вывести авторов постов со словом ‘Recipes’ в названии, отсортировать в алфавитном порядке.
  4. Вывести категории постов автора ‘Jane Doe’, отсортировать по категориям в порядке убывания.
  5. Найти названия постов, содержащих букву ‘q’, отсортировав по названию.
  6. Вывести все уникальные категории, отсортированные по длине названия категории (от самой длинной к самой короткой).
  7. Вывести авторов, которые начинаются с ‘J’ или заканчиваются на ‘n’, в алфавитном порядке.
  8. Показать названия постов, которые содержат слово “the” (без учета регистра) и были опубликованы до марта 2024 года, отсортированные по названию.
  9. Вывести авторов, у которых названия постов содержат цифры, отсортировав по имени автора.
  10. Вывести названия, опубликованные после ‘2024-02-01’ и категория которых ‘Technology’, отсортировать по publication_date в порядке убывания.

Вариант 14: Ответы на онлайн-опрос

Схема:

CREATE TABLE survey_responses (
    response_id INTEGER PRIMARY KEY,
    question VARCHAR(255),
    answer VARCHAR(255),
    respondent_id INTEGER,
    response_date DATE
);
INSERT INTO survey_responses (response_id, question, answer, respondent_id, response_date) VALUES
(1, 'What is your favorite color?', 'Blue', 101, '2024-03-01'),
(2, 'What is your favorite color?', 'Red', 102, '2024-03-01'),
(3, 'What is your favorite programming language?', 'Python', 101, '2024-03-02'),
(4, 'What is your favorite programming language?', 'JavaScript', 103, '2024-03-02'),
(5, 'What is your favorite color?', 'Green', 103, '2024-03-03'),
(6, 'What is your favorite programming language?', 'Java', 102, '2024-03-03');

Задания:

  1. Вывести все уникальные вопросы в алфавитном порядке.
  2. Вывести ответы на вопрос “What is your favorite color?”, отсортированные по ответу.
  3. Вывести вопросы, ответы на которые содержат слово “Python”.
  4. Вывести уникальные ответы на вопрос ‘What is your favorite programming language?’, отсортировав по ответу.
  5. Найти ответы, содержащие букву ‘v’, отсортировав по ответу.
  6. Вывести все уникальные вопросы, отсортированные по длине вопроса (от самого короткого к самому длинному).
  7. Вывести вопросы, которые заканчиваются знаком вопроса, в алфавитном порядке.
  8. Показать ответы, длина которых превышает 4 символа, и которые относятся к вопросу о любимых цветах, отсортированные по ответу.
  9. Вывести вопросы, у которых ответы содержат ‘e’ не менее двух раз.
  10. Вывести ответы с response_date раньше, чем ‘2024-03-03’, и вопросом о программировании, отсортировать по ответу в порядке убывания.

Вариант 15: Управление запасами

Схема:

CREATE TABLE inventory (
    item_id INTEGER PRIMARY KEY,
    item_name VARCHAR(255),
    category VARCHAR(100),
    quantity_in_stock INTEGER,
    reorder_level INTEGER,
    supplier VARCHAR(255)
);

INSERT INTO inventory (item_id, item_name, category, quantity_in_stock, reorder_level, supplier) VALUES
(1, 'Laptop', 'Electronics', 50, 20, 'Tech Suppliers Inc.'),
(2, 'Office Chair', 'Furniture', 100, 30, 'Furniture World'),
(3, 'Notebook', 'Stationery', 200, 50, 'Paper Products Co.'),
(4, 'Printer', 'Electronics', 30, 10, 'Tech Suppliers Inc.'),
(5, 'Desk Lamp', 'Furniture', 75, 25, 'Furniture World'),
(6, 'Stapler', 'Stationery', 150, 40, 'Paper Products Co.');

Задания:

  1. Вывести все уникальные категории в алфавитном порядке.
  2. Вывести названия товаров, количество которых на складе ниже уровня повторного заказа, отсортированные по названию товара.
  3. Вывести категории товаров, названия которых содержат букву “e”, в алфавитном порядке.
  4. Вывести названия товаров, поставляемых ‘Tech Suppliers Inc.’, отсортированные по названию товара в порядке убывания.
  5. Найти названия товаров с reorder_level выше 30, отсортировав по названию.
  6. Вывести всех уникальных поставщиков, отсортированных по длине названия поставщика (от самого длинного к самому короткому).
  7. Вывести категории, которые начинаются с буквы ‘E’ или заканчиваются на ‘e’, в алфавитном порядке.
  8. Показать названия товаров, количество которых на складе больше 50 и уровень повторного заказа которых меньше 30, отсортированные по названию товара.
  9. Вывести поставщиков, у которых в названии категории товара присутствует буква ‘r’, отсортировав по имени поставщика.
  10. Вывести названия товаров, количество которых меньше уровня повторного заказа И категория - ‘Stationery’, отсортировать по quantity_in_stock в порядке убывания.

Вариант 16: Данные фитнес-трекера

Схема:

CREATE TABLE fitness_data (
    record_id INTEGER PRIMARY KEY,
    user_id INTEGER,
    activity_type VARCHAR(50),
    date DATE,
    duration_minutes INTEGER,
    calories_burned INTEGER
);

INSERT INTO fitness_data (record_id, user_id, activity_type, date, duration_minutes, calories_burned) VALUES
(1, 1, 'Running', '2024-03-01', 30, 300),
(2, 1, 'Walking', '2024-03-02', 60, 200),
(3, 2, 'Cycling', '2024-03-03', 45, 400),
(4, 1, 'Swimming', '2024-03-04', 30, 250),
(5, 2, 'Yoga', '2024-03-05', 60, 150),
(6, 1, 'Running', '2024-03-06', 45, 450),
(7, 3, 'Weightlifting', '2024-03-07', 60, 350);

Задания:

  1. Вывести все уникальные виды активности (activity type) в алфавитном порядке.
  2. Вывести виды активности, продолжительность которых превышает 45 минут, отсортированные по виду активности.
  3. Вывести виды активности, названия которых содержат ‘ing’, в алфавитном порядке.
  4. Вывести записи для пользователя с ID 1, отсортированные по дате в порядке убывания.
  5. Найти записи, где calories_burned больше 200, отсортированные по продолжительности.
  6. Вывести все уникальные ID пользователей, отсортированные по возрастанию.
  7. Вывести виды активности, которые начинаются с ‘W’ или начинаются с ‘Y’, в алфавитном порядке.
  8. Показать виды активности, где продолжительность менее 60 минут и сожженные калории больше 200, отсортированные по виду активности.
  9. Вывести виды активности, где пользователи сожгли более 300 калорий, в алфавитном порядке.
  10. Вывести виды активности для записей с продолжительностью более 30 минут И пользователя с ID 1, отсортировав по продолжительности.

Вариант 17: Бронирование отелей

Схема:

CREATE TABLE bookings (
    booking_id INTEGER PRIMARY KEY,
    guest_name VARCHAR(255),
    room_type VARCHAR(100),
    check_in_date DATE,
    check_out_date DATE,
    number_of_guests INTEGER
);
INSERT INTO bookings (booking_id, guest_name, room_type, check_in_date, check_out_date, number_of_guests)
VALUES
    (1, 'John Smith', 'Single', '2024-04-01', '2024-04-03', 1),
    (2, 'Alice Johnson', 'Double', '2024-04-05', '2024-04-08', 2),
    (3, 'Bob Williams', 'Suite', '2024-04-10', '2024-04-15', 3),
    (4, 'Emily Davis', 'Single', '2024-04-12', '2024-04-14', 1),
    (5, 'Michael Brown', 'Double', '2024-04-18', '2024-04-22', 2),
    (6, 'Sophia Lee', 'Suite', '2024-04-20', '2024-04-25', 4);

Задания:

  1. Вывести все уникальные типы номеров (room type) в алфавитном порядке.
  2. Вывести имена гостей, забронировавших номер типа ‘Single’, отсортированные по имени.
  3. Вывести все типы номеров, содержащих букву ‘e’, в алфавитном порядке.
  4. Вывести имена гостей, заезжающих после 10 апреля, отсортированные по имени гостя.
  5. Найти имена гостей, у которых дата заезда (check-in date) раньше ‘2024-04-10’, отсортировать по имени в порядке убывания.
  6. Вывести все уникальные имена гостей, отсортированные по длине имени (от самого длинного к самому короткому).
  7. Вывести типы номеров, где количество гостей больше 1 и тип номера начинается с ‘D’, в алфавитном порядке.
  8. Показать имена гостей, забронировавших номер более чем на 3 ночи, отсортированные по имени гостя.
  9. Вывести тип номера, где имя гостя содержит ‘i’, отсортированный по типу номера.
  10. Вывести имена гостей с number_of_guests больше 2 и check_in_date раньше ‘2024-04-15’, отсортировать по имени.

Вариант 18: Платформа онлайн-курсов

Схема:

CREATE TABLE courses (
    course_id INTEGER PRIMARY KEY,
    course_name VARCHAR(255),
    instructor_name VARCHAR(255),
    category VARCHAR(100),
    enrollment_count INTEGER,
    rating NUMERIC(3,2)
);

INSERT INTO courses (course_id, course_name, instructor_name, category, enrollment_count, rating) VALUES
(1, 'Introduction to Python', 'John Smith', 'Programming', 500, 4.5),
(2, 'Web Development Basics', 'Jane Doe', 'Web Development', 400, 4.8),
(3, 'Data Science Fundamentals', 'David Lee', 'Data Science', 300, 4.6),
(4, 'JavaScript for Beginners', 'Emily Brown', 'Programming', 600, 4.7),
(5, 'Machine Learning with Python', 'Michael Davis', 'Data Science', 250, 4.9),
(6, 'Advanced Web Development', 'Sophia Wilson', 'Web Development', 350, 4.4);

Задания:

  1. Вывести все уникальные категории (category) в алфавитном порядке.
  2. Вывести названия курсов с рейтингом выше 4.5, отсортированные по названию курса.
  3. Вывести категории курсов, названия которых содержат “Python”, в алфавитном порядке.
  4. Вывести имена инструкторов курсов в категории ‘Web Development’, отсортированные по имени инструктора в порядке убывания.
  5. Найти названия курсов с количеством записавшихся (enrollment count) больше 400, отсортировать по имени.
  6. Вывести все уникальные имена инструкторов, отсортированные по длине имени (от самого короткого к самому длинному).
  7. Вывести категории, которые заканчиваются на букву ‘t’, в алфавитном порядке.
  8. Показать названия курсов, у которых количество записавшихся меньше 400 и рейтинг выше 4.6, отсортированные по названию курса.
  9. Вывести имена инструкторов, где название курса содержит ‘ment’, отсортированные по имени инструктора.
  10. Вывести названия курсов, у которых enrollment_count меньше 500 и рейтинг больше 4.6, отсортировать по rating.

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

Playful GIF