Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра ОМП
Розрахункова робота
З дисципліни : ”Інформатика”
Львів 2014
Завдання до розрахункової роботи
І. Створити базу даних. Для цього створити структури таблиць із наступними полями (жирним шрифтом виділені ключові поля):
Товари
Назва поля
Тип даних
Код товару
Числовой (Размер поля — Целое)
Найменування
Текстовый (Размер поля — 200)
Ціна
Денежный (Формат поля — Денежный)
Кількість
Числовой (Размер поля — Байт)
Офіси
Назва поля
Тип даних
Код офісу
Числовой (Размер поля — Целое)
Місто
Текстовый (Размер поля — 100)
Регіон
Текстовый (Размер поля — 50)
План
Денежный (Формат поля — Денежный)
Сума контрактів
Денежный (Формат поля — Денежный)
Працівники
Назва поля
Тип даних
Код службовця
Числовой (Размер поля — Целое)
Прізвище
Текстовый (Размер поля — 100)
Офіс
Числовой (Размер поля — Целое)
Посада
Текстовый (Размер поля — 50)
План
Денежный (Формат поля — Денежный)
Сума контрактів
Денежный (Формат поля — Денежный)
Клієнти
Назва поля
Тип даних
Код клієнта
Числовой (Размер поля — Целое)
Фірма
Текстовый (Размер поля — 255)
Код працівника
Числовой (Размер поля — Целое)
Кредит
Денежный (Формат поля — Денежный)
Замовлення
Назва поля
Тип даних
Номер
Счетчик
Дата
Дата/Время (Формат поля — Краткий формат даты)
Код клієнта
Числовой (Размер поля — Целое)
Товар
Денежный (Формат поля — Денежный)
Кількість
Числовой (Размер поля — Целое)
Продавець
Числовой (Размер поля — Целое)
Підсумки
Назва поля
Тип даних
Номер запису
Счетчик
Найменування
Текстовый (Размер поля — 255)
Місяць
Числовой (Размер поля — Байт)
Вартість
Денежный (Формат поля — Денежный)
Та встановити зв’язки між таблицями наступним чином:
Офіси.Код Офісу
Працівники.Офіс
Клієнти.Код клієнта
Замовлення.Код клієнта
Товари.Код товару
Замовлення.Товар
Працівники.Код службовця
Замовлення.Продавець
Після встановлення наведених зв’язків схема даних матиме вигляд:
ІІ. Ввести дані в таблиці. Заповнивши відповідні поля, отримаємо наступний вигляд таблиць:
Товари
Код товару
Найменування
Ціна
Кількість
112
процесор Intel Core i3
1 900,00 грн.
15
113
процесор Acer
1 200,00 грн.
30
114
оперативна пам'ять Kingston DDR3
1 100,00 грн.
50
115
накопичувач SSD Plextor 500 Gb
3 000,00 грн.
10
116
процесор Intel Core Duo
1 500,00 грн.
13
117
монітор Sony 17"
990,00 грн.
12
118
монітор Sony 19"
110,00 грн.
35
315
монітор Samsung 19"
110,00 грн.
50
Офіси
Код Офісу
Місто
Регіон
План
Сума контрактів
11
Тернопіль
захід
12 000,00 грн.
15 000,00 грн.
12
Харків
схід
15 000,00 грн.
20 000,00 грн.
13
Чернівці
захід
1 800,00 грн.
2 000,00 грн.
14
Івано-Франківськ
захід
1 100,00 грн.
1 299,00 грн.
15
Одеса
південь
115 000,00 грн.
13 000,00 грн.
Працівники
Код службовця
Прізвище
Офіс
Посада
План
Сума контрактів
1
Перегінець М.Я.
11
директор
12 000,00 грн.
12 000,00 грн.
2
Євчук О.Е.
12
менеджер
5 000,00 грн.
35 000,00 грн.
3
Андрійчук Ж.К.
11
менеджер
8 000,00 грн.
24 000,00 грн.
4
Петрович Й.К.
14
агент
12 000,00 грн.
54 000,00 грн.
5
Павлюк О.Р.
12
агент
3 400,00 грн.
12 000,00 грн.
6
Геращенко П.В.
15
топ-менеджер
12 000,00 грн.
8 000,00 грн.
7
Павлюк І.В.
13
директор
13 000,00 грн.
114 000,00 грн.
8
Мороз В.В.
14
працівник
15 000,00 грн.
18 000,00 грн.
Клієнти
Код клієнта
Фірма
Код працівника
Кредит
201
АРТ
654
13 000,00 грн.
202
МегаМакс
546
15 000,00 грн.
203
МаксБуд
458
91 000,00 грн.
204
Воля
987
12 000,00 грн.
205
Таврія
648
206
ЛісБуд
864
207
Paradise
4
208
Р1
101
4 000,00 грн.
Замовлення
Номер
Дата
Код клієнта
Товар
Кількість
Продавець
1
12.02.2014
201
112
5
2
2
03.02.2014
202
113
3
5
3
21.02.2014
203
114
4
3
4
14.02.2014
205
116
7
5
5
14.04.2014
205
315
7
5
6
29.04.2009
208
114
4
8
підсумки
Номер запису
Найменування
Місяць
Вартість
1
монітор Samsung 19"
4
770,00₴
2
оперативна пам'ять Kingston DDR3
2
4 400,00₴
3
оперативна пам'ять Kingston DDR3
4
4 400,00₴
4
процесор Acer
2
3 600,00₴
5
процесор Intel Core Duo
2
10 500,00₴
6
процесор Intel Core i3
2
9 500,00₴
ІІІ.Створити та виконати наступні запити:
1.Створіть запит, який відображає назви фірм та їх кредит, які обслуговує
працівник з кодом 101. Збережіть запит з іменем СамЗапит1.
Режим SQL:
SELECT Клієнти.Фірма, Клієнти.Кредит
FROM Клієнти
WHERE (((Клієнти.[Код працівника])=101));
Результат виконання запиту:
СамЗапит 1
Фірма
Кредит
Р1
4 000,00 грн.
2.Створіть запит, який відображає інформацію про клієнтів з кредитом більшим за
20000 грн. Збережіть запит з іменем СамЗапит2.
Режим SQL:
SELECT Клієнти.*, *
FROM Клієнти
WHERE (((Клієнти.Кредит)>20000));
Результат виконання запиту:
СамЗапит 2
Код клієнта
Фірма
Код працівника
Кредит
203
МаксБуд
458
91 000,00 грн.
3.Створіть запит, який відображає найменування товарів, яких є менше ніж 20 шт.
на складі. Збережіть запит з іменем СамЗапит3.
Режим SQL:
SELECT Товари.Найменування
FROM Товари
WHERE (((Товари.Кількість)<20));
Результат виконання запиту:
СамЗапит 3
Найменування
процесор Intel Core i3
накопичувач SSD Plextor 500 Gb
процесор Intel Core Duo
монітор Sony 17"
4.Створіть запит, який відображає прізвища працівників 12 офісу, які перевиконали
план. Збережіть запит з іменем СамЗапит4.
Режим SQL:
SELECT Прізвище
FROM Працівники
WHERE (((Працівники.Офіс)=12 AND (Працівники.[Сума контрактів])>План));
Результат виконання запиту:
СамЗапит 4
Прізвище
Євчук О.Е.
Павлюк О.Р.
5.Створіть запит, який відображає дані про працівників, обсяг продаж яких знаходиться в межах від 80% до 120% відносно запланованих показників. Збережіть запит з іменем СамЗапит5.
Режим SQL:
SELECT Працівники.*
FROM Працівники
WHERE (((Працівники.[Сума контрактів])>0.8*[План] And (Працівники.[Сума контрактів])<1.2*[План]));
Результат виконання запиту:
СамЗапит 5
Код службовця
Прізвище
Офіс
Посада
План
Сума контрактів
1
Перегінець М.Я.
11
директор
12 000,00 грн.
12 000,00 грн.
6.Створіть запит, який відображає товари та їх ціну, яка не міститься в діапазоні від
200 грн. до 1000 грн. Збережіть запит з іменем СамЗапит6.
Режим SQL:
SELECT Товари.Найменування, Товари.Ціна
FROM Товари
WHERE (((Товари.Ціна)>1000 OR (Товари.Ціна)<200));
Результат виконання запиту:
СамЗапит 6
Найменування
Ціна
процесор Intel Core i3
1 900,00 грн.
процесор Acer
1 200,00 грн.
оперативна пам'ять Kingston DDR3
1 100,00 грн.
накопичувач SSD Plextor 500 Gb
3 000,00 грн.
процесор Intel Core Duo
1 500,00 грн.
монітор Sony 19"
110,00 грн.
монітор Samsung 19"
110,00 грн.
7.Створіть запит, який відображає дані про замовлення товарів з номерами 306,
307 та 315. Збережіть запит з іменем СамЗапит7.
Режим SQL:
SELECT Замовлення.*
FROM Замовлення
WHERE Замовлення.Товар IN (306,307,315);
Результат виконання запиту:
СамЗапит 7
Номер
Дата
Код клієнта
Товар
Кількість
Продавець
5
14.02.2014
205
315
7
5
8.Створіть запит, який відображає назви фірм на букву «Р». Відсортуйте назви фірм в алфавітному порядку. Збережіть запит з іменем СамЗапит8.
Режим SQL:
SELECT Клієнти.Фірма
FROM Клієнти
WHERE (((Клієнти.Фірма) Like "Р*"))
ORDER BY Клієнти.Фірма;
Результат виконання запиту:
СамЗапит 8
Фірма
Р1
9.Створіть запит, який відображає мінімальну та максимальну суму укладених контрактів для працівників 12 офісу. Використайте агрегуючі функції MIN та MAX і збережіть запит з іменем СамЗапит9.
Режим SQL:
SELECT Max(Працівники.[Сума контрактів]) AS [Максимальна сума контрактів], Min(Працівники.[Сума контрактів]) AS [Мінімальна сума контрактів]
FROM Працівники
GROUP BY Працівники.Офіс
HAVING (((Працівники.Офіс)=12));
Результат виконання запиту:
СамЗапит 9
Максимальна сума контрактів
Мінімальна сума контрактів
35 000,00₴
12 000,00₴
10.Створіть запит на основі таблиці Замовлення, який відображає кількість незалежних замовлень по кожному товару і сумарну кількість замовлень для кожної одиниці товару. Використайте агрегуючі функції COUNT та SUM і збережіть запит з іменем СамЗапит10.
Режим SQL:
SELECT Товар, COUNT (Замовлення.Кількість) AS [кількість незалежних замовлень], Sum(Замовлення.Кількість) AS [сумарна кількість]
FROM Замовлення
GROUP BY Замовлення.Товар;
Результат виконання запиту:
Самзапит 10
Товар
кількість незалежних замовлень
сумарна кількість
112
1
5
113
1
3
114
2
8
116
1
7
315
1
7
11.Створіть запит, який відображає прізвище працівника, фірму з якою він оформив замовлення та дату замовлення. Збережіть запит з іменем СамЗапит11.
Режим SQL:
SELECT Працівники.Прізвище, Клієнти.Фірма, Замовлення.Дата
FROM Працівники INNER JOIN (Клієнти INNER JOIN Замовлення ON Клієнти.[Код клієнта] = Замовлення.[Код клієнта]) ON Працівники.[Код службовця] = Замовлення.Продавець;
Результат виконання запиту:
СамЗапит 11
Прізвище
Фірма
Дата
Євчук О.Е.
АРТ
12.02.2014
Павлюк О.Р.
МегаМакс
03.02.2014
Андрійчук Ж.К.
МаксБуд
21.02.2014
Павлюк О.Р.
Таврія
14.02.2014
Павлюк О.Р.
Таврія
14.04.2014
Мороз В.В.
Р1
29.04.2009
12.Створіть запит, який відображає сумарну вартість замовлень, які оформив працівник Мороз В.В. Використайте агрегуючу функцію SUM, вартість замовлення–це добуток кількості замовлень з таблиці Замовлення на ціну з таблиці Товари. Збережіть запит з іменем СамЗапит12.
Режим SQL:
SELECT Sum(Замовлення.Кількість*Товари.Ціна) AS [Сумарна вартість]
FROM Товари INNER JOIN (Працівники INNER JOIN Замовлення ON Працівники.[Код службовця] = Замовлення.Продавець) ON Товари.[Код товару] = Замовлення.Товар
GROUP BY Працівники.Прізвище, Працівники.Посада
HAVING (((Працівники.Прізвище) Like "Мороз В.В.") AND ((Працівники.Посада) Like "працівник"));
Результат виконання запиту:
СамЗапит 12
Сумарна вартість
4 400,00₴
13.Створіть запит, який відображає кількість замовлень, які оформлені працівниками 12 офісу. При побудові запиту використайте агрегуючу функцію COUNT. Збережіть запит з іменем СамЗапит13.
Режим SQL:
SELECT Count(Замовлення.Номер) AS [Кількість замовлень]
FROM Працівники INNER JOIN Замовлення ON Працівники.[Код службовця] = Замовлення.Продавець
GROUP BY Працівники.Офіс
HAVING (((Працівники.Офіс) Like "12"));
Результат виконання запиту:
СамЗапит13
Кількість замовлень
4
14.Створіть запит, який відображає найменування проданих товарів з кодом 307, 308 та 315. Результати запиту повинні бути унікальні (без повторів). Збережіть запит з іменем СамЗапит14.
Режим SQL:
SELECT DISTINCT Товари.Найменування, Замовлення.Товар
FROM Товари INNER JOIN Замовлення ON Товари.[Код товару] = Замовлення.Товар
WHERE (Замовлення.Товар IN(307,308,315));
Результат виконання запиту:
СамЗапит 14
Найменування
монітор Samsung 19"
15.Створіть запит, який відображає вартість кожного замовлення. Крім вартості запит повинен містити назву товару, його ціну та кількість товару в замовленні. Збережіть запит з іменем СамЗапит15.
Режим SQL:
SELECT Товари.Найменування, Товари.Ціна, Замовлення.Кількість, [Замовлення].[Кількість]*[Товари].[Ціна] AS Вартість
FROM Товари INNER JOIN Замовлення ON Товари.[Код товару] = Замовлення.Товар;
Результат виконання запиту:
СамЗапит 15
Найменування
Ціна
Кількість
Вартість
процесор Intel Core i3
1 900,00 грн.
5
9 500,00₴
процесор Acer
1 200,00 грн.
3
3 600,00₴
оперативна пам'ять Kingston DDR3
1 100,00 грн.
4
4 400,00₴
оперативна пам'ять Kingston DDR3
1 100,00 грн.
4
4 400,00₴
процесор Intel Core Duo
1 500,00 грн.
7
10 500,00₴
монітор Samsung 19"
110,00 грн.
7
770,00₴
16. Створіть запит, який відображає cередню ціну замовленого товару. Збережіть
запит з іменем СамЗапит16.
Режим SQL:
SELECT DISTINCT Avg(Товари.Ціна) AS [Середня ціна]
FROM Товари INNER JOIN Замовлення ON Товари.[Код товару] = Замовлення.Товар;
Результат виконання запиту:
СамЗапит 16
Середня ціна
1 151,67₴
17.Створіть запит, який відображає загальну вартість замовлень для кожного
найменування товару. Збережіть запит з іменем СамЗапит17.
Режим SQL:
SELECT Товари.Найменування, Sum([Товари].[Ціна]*[Замовлення].[Кількість]) AS Вартість
FROM Товари INNER JOIN Замовлення ON Товари.[Код товару] = Замовлення.Товар
GROUP BY Товари.Найменування;
Результат виконання запиту:
СамЗапит 17
Найменування
Вартість
монітор Samsung 19"
770,00₴
оперативна пам'ять Kingston DDR3
8 800,00₴
процесор Acer
3 600,00₴
процесор Intel Core Duo
10 500,00₴
процесор Intel Core i3
9 500,00₴
18.Створіть запит, який відображає максимальну та мінімальну вартість замовлення для кожного клієнта. Збережіть запит з іменем СамЗапит18.
Режим SQL:
SELECT Клієнти.Фірма, Max([Замовлення].[Кількість]*[Товари].[Ціна]) AS [Макс Вартість], Min([Замовлення].[Кількість]*[Товари].[Ціна]) AS [Мін Вартість]
FROM Товари INNER JOIN (Клієнти INNER JOIN Замовлення ON Клієнти.[Код клієнта] = Замовлення.[Код клієнта]) ON Товари.[Код товару] = Замовлення.Товар
GROUP BY Клієнти.Фірма;
Результат виконання запиту:
СамЗапит 18
Фірма
Макс Вартість
Мін Вартість
АРТ
9 500,00₴
9 500,00₴
МаксБуд
4 400,00₴
4 400,00₴
МегаМакс
3 600,00₴
3 600,00₴
Р1
4 400,00₴
4 400,00₴
Таврія
10 500,00₴
770,00₴
19.Створіть запит, який відображає відображає загальну вартість замовлень для кожного найменування товару за кожен місяць. Збережіть запит з іменем СамЗапит19.
Режим SQL:
SELECT Товари.Найменування, Month([Дата]) AS Місяць, Sum([Замовлення].[Кількість]*[Товари].[Ціна]) AS [Загальна Вартість]
FROM Товари INNER JOIN Замовлення ON Товари.[Код товару] = Замовлення.Товар
GROUP BY Товари.Найменування, Month([Дата]);
Результат виконання запиту:
СамЗапит 19
Найменування
Місяць
Загальна Вартість
монітор Samsung 19"
4
770,00₴
оперативна пам'ять Kingston DDR3
2
4 400,00₴
оперативна пам'ять Kingston DDR3
4
4 400,00₴
процесор Acer
2
3 600,00₴
процесор Intel Core Duo
2
10 500,00₴
процесор Intel Core i3
2
9 500,00₴
20.Створіть запит, який відображає назви фірми, які оформили більше одного
замовлення. Збережіть запит з іменем СамЗапит20.
Режим SQL:
SELECT DISTINCT Клієнти.Фірма
FROM Клієнти INNER JOIN Замовлення ON Клієнти.[Код клієнта] = Замовлення.[Код клієнта]
GROUP BY Клієнти.Фірма
HAVING (((Count(Замовлення.Номер))>1));
Результат виконання запиту:
СамЗапит 20
Фірма
Таврія
21.Створіть запит, який додає нового клієнта без виділеного кредиту, що буде співпрацювати з Кушніром Н.В. (код працівника – 109). Збережіть запит з іменем СамЗапит21.
Режим SQL:
INSERT INTO Клієнти ( [Код клієнта], Фірма, [Код працівника], Кредит )
VALUES (110,"Епіцентр",109,Null)
Режим таблиці:
СамЗапит21
Expr1000
Expr1001
Expr1002
Expr1003
110
Епіцентр
109
Результат виконання запиту:
Клієнти
Код клієнта
Фірма
Код працівника
Кредит
110
Епіцентр
109
201
АРТ
654
13 000,00 грн.
202
МегаМакс
546
15 000,00 грн.
203
МаксБуд
458
91 000,00 грн.
204
Воля
987
12 000,00 грн.
205
Таврія
648
206
ЛісБуд
864
207
Paradise
4
208
Р1
101
4 000,00 грн.
22. Створіть запит, який видаляє всі замовлення за 29 та 30 квітня 2009 року. Збережіть запит з іменем СамЗапит22.
Режим SQL:
DELETE Замовлення.*
FROM Замовлення
WHERE (((Замовлення.Дата)=#4/29/2009#));
Режим таблиці:
СамЗапит 22
Номер
Дата
Код клієнта
Товар
Кількість
Продавець
6
29.04.2009
208
114
4
8
Результат виконання запиту:
Замовлення
Номер
Дата
Код клієнта
Товар
Кількість
Продавець
1
12.02.2014
201
112
5
2
2
03.02.2014
202
113
3
5
3
21.02.2014
203
114
4
3
4
14.02.2014
205
116
7
5
5
14.04.2014
205
315
7
5
23. Створіть запит, який для клієнтів з кредитом менше ніж 5000 грн. збільшить його на 2000 грн. Збережіть запит з іменем СамЗапит23.
Режим SQL:
UPDATE Клієнти SET Клієнти.Кредит = Кредит+2000
WHERE (((Клієнти.Кредит)<5000));
Режим таблиці:
СамЗапит23
Кредит
4 000,00 грн.
Результат виконання запиту:
Клієнти
Код клієнта
Фірма
Код працівника
Кредит
110
Епіцентр
109
201
АРТ
654
13 000,00 грн.
202
МегаМакс
546
15 000,00 грн.
203
МаксБуд
458
91 000,00 грн.
204
Воля
987
12 000,00 грн.
205
Таврія
648
206
ЛісБуд
864
207
Paradise
4
208
Р1
101
6 000,00 грн.
24.Створіть запит, який змінює код харківського офісу з 13-го на 18-ий та встановлює для цього офісу новий план у розмірі 10000 грн. Збережіть запит з іменем СамЗапит24.
Режим SQL:
UPDATE Офіси SET Офіси.[Код Офісу] = 18, Офіси.План = 10000
WHERE (((Офіси.[Код Офісу])=12));
Режим таблиці:
СамЗапит 24
Код Офісу
План
12
15 000,00 грн.
Результат виконання запиту:
Офіси
Код Офісу
Місто
Регіон
План
Сума контрактів
11
Тернопіль
захід
12 000,00 грн.
15 000,00 грн.
13
Чернівці
захід
1 800,00 грн.
2 000,00 грн.
14
Івано-Франківськ
захід
1 100,00 грн.
1 299,00 грн.
15
Одеса
південь
115 000,00 грн.
13 000,00 грн.
18
Харків
схід
10 000,00 грн.
20 000,00 грн.
25.Створіть запит, який для працівника(працівників) з мінімальною сумою укладених контрактів зменшить їх план на 15%.12 офісу. Збережіть запит з іменем СамЗапит25.
Режим SQL:
UPDATE Працівники SET Працівники.План = План*0.85
WHERE Офіс=12 AND (Працівники.[Сума контрактів]=(Select Min([Сума контрактів]) FROM Працівники Where (Офіс=12)));
Режим таблиці:
СамЗапит 25
План
3 400,00 грн.
Результат виконання запиту:
Працівники
Код службовця
Прізвище
Офіс
Посада
План
Сума контрактів
1
Перегінець М.Я.
11
директор
12 000,00 грн.
12 000,00 грн.
2
Євчук О.Е.
12
менеджер
5 000,00 грн.
35 000,00 грн.
3
Андрійчук Ж.К.
11
менеджер
8 000,00 грн.
24 000,00 грн.
4
Петрович Й.К.
14
агент
12 000,00 грн.
54 000,00 грн.
5
Павлюк О.Р.
12
агент
2 890,00 грн.
12 000,00 грн.
6
Геращенко П.В.
15
топ-менеджер
12 000,00 грн.
8 000,00 грн.
7
Павлюк І.В.
13
директор
13 000,00 грн.
114 000,00 грн.
8
Мороз В.В.
14
працівник
15 000,00 грн.
18 000,00 грн.
26.Створіть запит, який в таблицю Підсумки додає дані про вартість замовлення з
максимальною кількістю одиниць товару. Збережіть запит з іменем СамЗапит26.
Режим SQL:
INSERT INTO Підсумки ( Вартість )
SELECT [Замовлення].[Кількість]*[Товари].[Ціна] AS Вартість
FROM Товари INNER JOIN Замовлення ON Товари.[Код товару] = Замовлення.Товар
WHERE (((Замовлення.Кількість)=(SELECT MAX(Замовлення.Кількість) FROM Замовлення)));
Режим таблиці:
СамЗапит 26
Вартість
10 500,00₴
770,00₴
Результат виконання запиту:
підсумки
Номер запису
Найменування
Місяць
Вартість
1
монітор Samsung 19"
4
770,00₴
2
оперативна пам'ять Kingston DDR3
2
4 400,00₴
3
оперативна пам'ять Kingston DDR3
4
4 400,00₴
4
процесор Acer
2
3 600,00₴
5
процесор Intel Core Duo
2
10 500,00₴
6
процесор Intel Core i3
2
9 500,00₴
7
10 500,00₴
8
770,00₴