Skip to content

Commit 95174e8

Browse files
committed
fix: 1.5 solutions
1 parent 0f61717 commit 95174e8

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

1. The relational model/1.5 Update queries/solutions.sql

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,65 @@ VALUES
2727

2828
/* Добавить из таблицы supply в таблицу book, все книги,
2929
кроме книг, написанных Булгаковым М.А. и Достоевским Ф.М. */
30+
-- 1 variant
31+
INSERT INTO book (title, author, price, amount)
32+
SELECT title, author, price, amount
33+
FROM supply
34+
WHERE (author <> 'Булгаков М.А.' AND author <> 'Достоевский Ф.М.');
35+
-- 2 variant
36+
INSERT INTO book(title, author, price, amount)
37+
SELECT title, author, price, amount
38+
FROM supply
39+
WHERE author NOT IN ('Булгаков М.А.', 'Достоевский Ф.М.');
40+
41+
/* Занести из таблицы supply в таблицу book только те книги, авторов которых нет в book. */
42+
INSERT INTO book (title, author, price, amount)
43+
SELECT title, author, price, amount
44+
FROM supply
45+
WHERE author NOT IN (SELECT author FROM book);
46+
47+
/* Уменьшить на 10% цену тех книг в таблице book, количество которых принадлежит интервалу от 5 до 10 включительно. */
48+
UPDATE book
49+
SET price = 0.9 * price
50+
WHERE amount BETWEEN 5 AND 10;
51+
52+
/* В таблице book необходимо скорректировать значение для покупателя в столбце buy
53+
таким образом, чтобы оно не превышало допустимый остаток в столбце amount.
54+
А цену тех книг, которые покупатель не заказывал, снизить на 10%. */
55+
UPDATE book
56+
SET buy = IF(buy > amount, amount, buy),
57+
price = IF(buy = 0, 0.9 * price, price);
58+
59+
/* Для тех книг в таблице book , которые есть в таблице supply, не только увеличить их количество в таблице book
60+
(увеличить их количество на значение столбца amountтаблицы supply), но и пересчитать их цену (для каждой книги
61+
найти сумму цен из таблиц book и supply и разделить на 2). */
62+
UPDATE book, supply
63+
SET book.amount = book.amount + supply.amount,
64+
book.price = (book.price + supply.price) / 2
65+
WHERE book.title = supply.title AND book.author = supply.author;
66+
67+
/* Удалить из таблицы supply книги тех авторов, общее количество экземпляров книг которых в таблице book превышает 10. */
68+
DELETE FROM supply
69+
WHERE author IN (
70+
SELECT author
71+
FROM book
72+
GROUP BY author
73+
HAVING SUM(amount) > 10);
74+
75+
/* Создать таблицу заказ (ordering), куда включить авторов и названия тех книг, количество
76+
экземпляров которых в таблице book меньше среднего количества экземпляров книг в таблице book.
77+
В таблицу включить столбец amount, в котором для всех книг указать одинаковое значение -
78+
среднее количество экземпляров книг в таблице book. */
79+
CREATE TABLE ordering AS
80+
SELECT author, title,
81+
(SELECT FLOOR(AVG(amount)) FROM book) AS amount
82+
FROM book
83+
WHERE amount < (SELECT AVG(amount) FROM book);
84+
85+
-- Придумайте один или несколько запросов корректировки данных к таблицам book и supply.
86+
CREATE TABLE difference AS
87+
SELECT title, author, price, amount
88+
FROM book
89+
WHERE title NOT IN (SELECT title
90+
FROM supply);
91+
SELECT * FROM difference;

0 commit comments

Comments
 (0)