You are on page 1of 13

ЛАБОРАТОРНА РОБОТА 2

з дисципліни “Організація баз даних”

ЗАПИТИ З СОРТУВАННЯМ ТА ГРУПУВАННЯМ

2.1 МЕТА РОБОТИ


Вивчення засобів сортування і групування в InterBase.

2.2 ТЕОРЕТИЧНІ ВІДОМОСТІ


SELECT
Призначення команди SELECT: для вибірки даних з однієї чи декількох
таблиць, або представлень.
Вимоги до використання:
Для вибірки даних з таблиці користувача, таблиця повинна знаходитися в
схемі цього користувача, чи користувач повинен мати привілей SELECT на
таблицю.
Для вибірки рядків з базової таблиці представлення власник схеми, що
містить представлення, повинен мати привілей SELECT на базові таблиці.
Також, якщо представлення знаходиться в схемі іншого користувача, то для
його перегляду необхідно мати привілей SELECT на представлення.
Системний привілей SELECT ANY дозволяє переглядати дані з будь-якої
таблиці чи будь-якої базової таблиці представлення.

2.3 ЗАВДАННЯ НА ЛАБОРАТОРНУ РОБОТУ


1. Виконати запити, що повертають всі рядки і всі стовпчики кожної із
створених в лабораторній роботі №5 таблиць.
2. Виконати запити, вказані у вашому варіанті (кожен пункт завдання
реалізується одним оператором SELECT).
3. Перевірити правильність роботи створених вами запитів.
4. Створити запити з сортуванням та групуванням.
Варіанти лабораторної роботи 9
Реалізувати наступні запити до таблиць БД:
Варіант 1
1. Вивести алфавітний список деталей, які мають добрий збут.
2. Вивести упорядкований список бригад, вказуючи кількість деталей, якщо
нічого не виготовлено, то 0 (зовнішнє з’єднання).
3. Вивести для бригади статистику по кількості деталей кожного типу, що
були використані замовниками з цього району (використати всі 3
таблиці).
4. Вивести список бригад, що виконали деталей більше, ніж середній
показник.
5. Вивести список бригад, що виготовили більше всіх деталей визначеного
типу.
Варіант 2
1. Вивести алфавітний список вкладників, що мають строкові вклади.
2. Вивести алфавітний список читачів, вказуючи кількість виданих грошей,
якщо нічого не видано, то 0 (зовнішнє з’єднання).
3. Вивести статистику по кількості вкладів кожного типу, що були
використані.
4. Вивести список вкладників, що вклали в 2 рази більше грошей, ніж
середній показник.
5. Вивести список прізвищ вкладників, що виграли по виграшному вкладу, і
суму виграшу.
Варіант 3
1. Вивести алфавітний список моделей, що мали збут.
2. Вивести алфавітний список моделей, вказуючи кількість збутих моделей,
якщо нічого не збуто, то 0 (зовнішнє з’єднання).
3. Вивести статистику по використанню матеріалів кожного типу, з яких
пошито збуті моделі.

2
4. Вивести список моделей, що потребують матеріалів більше, ніж середній
показник.
5. Вивести список матеріалів, з яких моделі не купляли.
Варіант 4
1. Вивести список екіпажів рейсу №1.
2. Вивести алфавітний список пунктів прибуття із вказанням загальної суми
рейсів (сума рейсів=рейс однієї компанії*кількість компаній).
3. Вивести назви всіх погодних чинників, за яких рейси не відбуваються.
4. Вивести кількість екіпажів на кожен рейс (якщо немає, то 0, використати
зовнішнє з’єднання).
5. Вивести назви пунктів прибуття останніх рейсів, вказавши дату.
Варіант 5
1. Вивести алфавітні списки прізвищ та ініціалів (перших букв імен і по-
батькові з крапкою) абонентів, із вказанням номерів відділу зв’язку.
2. Вивести прізвища абонентів, що мали переговори з іноземцями.
3. Вивести номера відділень зв’язку, із вказанням кількості абонентів в
кожному з них (якщо абонентів немає, то 0, використати зовнішнє
з’єднання).
4. Вивести список прізвищ абонентів, що наговорили більше ніж на 50 гр.
5. Вивести номера відділень зв’язку та суми наданих ними послуг.
Варіант 6
1. Вивести алфавітні списки прізвищ та ініціалів (перших букв імен і по-
батькові з крапкою) передплатників із вказанням суми, на яку
передплачено.
2. Вивести прізвища передплатників, що передплатили “Черкаський край“
на 21 відділені пошти.
3. Вивести номера відділень пошти з вказанням кількості передплатників в
кожному з них (якщо передплатників немає, то 0, використати зовнішнє
з’єднання).

3
4. Вивести список прізвищ передплатників, що передплатили більш ніж на
100 грн
5. Вивести номера відділень і прізвища кращих передплатників.

Варіант 7
1. Вивести назви предметів і ступінь їх забезпечення в лабораторії №3.
2. Вивести список предметів з кількістю лабораторій, що їх забезпечують, з
середнім ступенем.
3. Вивести список лабораторій, що забезпечують мову Паскаль
(використати 3 таблиці).
4. Вивести список лабораторій, вказати кількість предметів, яку вони
забезпечують і середній бал (якщо лабораторія не забезпечує жодного
предмету, то у результаті повинен бути 0, використати зовнішнє
з’єднання).
5. Вивести список назв предметів і назви (№) кращих лабораторій для цих
предметів (якщо їх декілька, то достатньо одну лабораторію).
Варіант 8
1. Вивести алфавітний список вантажів, що доставлені за замовленнями.
2. Вивести алфавітний список замовників, вказати сумарну вагу
доставлених вантажів, якщо нічого не доставлено, то 0 (зовнішнє
з’єднання).
3. Вивести статистику за кількістю вантажів кожного типу, що були
доставлені замовникам (використати всі 3 таблиці).
4. Вивести список замовників, що отримали в 2 рази більше вантажів, ніж
середній показник.
5. Вивести список замовників, що очікують замовлення більше місяця.
Варіант 9
1. Вивести алфавітний список будматеріалів, що доставлені і не витрачені.

4
2. Вивести алфавітний список будматеріалів, вказати сумарну вагу
доставлених будматеріалів, якщо нічого не доставлено, то 0 (зовнішнє
з’єднання).
3. Вивести статистику за кількістю будматеріалів кожного типу, що були
доставлені і використані (використати всі 3 таблиці).
4. Вивести список будматеріалів, що використано в 3 рази більше за
середній показник.
5. Вивести список використаних будматеріалів за місяць.
Варіант 10
1. Вивести алфавітний список доярок та сумарну кількість фуражу, що вони
видали.
2. Вивести алфавітний список корів, вказати сумарну вагу наданого фуражу,
якщо нічого не надано, то 0 (зовнішнє з’єднання).
3. Вивести статистику по надоях від корів з урахуванням режиму, якості
фуражу (використати всі 3 таблиці).
4. Вивести список корів, що одержали в 1,5 рази більше фуражу за середній
показник.
5. Вивести сумарний надій.
Варіант 11
1. Вивести алфавітний список робітників, що є у списках.
2. Вивести алфавітний список робітників, вказати сумарну суму коштів,
одержаних за місяць, якщо нічого не одержано, то 0 (зовнішнє з’єднання).
3. Вивести статистику по кількості кожного виду коштів (аванс, премія,
тощо), що були надані робітникам, які відробили без лікарняних
(використати всі 3 таблиці).
4. Вивести список робітників, що одержали в 2 рази більше, ніж середній
показник.
5. Вивести список робітників, що хворіли більше тижня.
Варіант 12
1. Вивести алфавітний список держав, що мають ресурси вугілля.

5
2. Вивести алфавітний список держав, вказати ВВП, демографічний стан,
сумарну вагу промислових викидів, якщо щось не відомо, то 0 (зовнішнє
з’єднання).
3. Вивести статистику по кількості ресурсів кожного типу, що були
використані підприємствами (використати всі 3 таблиці).
4. Вивести список ресурсів, які використані в 2 рази більше за середній
показник.
5. Вивести список держав, що мають економічну кризу.
Варіант 13
1. Вивести алфавітний список абітурієнтів, що бажають навчатись на
комп’ютерному факультеті.
2. Вивести алфавітний список абітурієнтів, вказати сумарний бал за всі
іспити, якщо не приймав участі в іспитах, то 0 (зовнішнє з’єднання).
3. Вивести статистику по кількості абітурієнтів кожного факультету, що
були присутні на іспитах (використати всі 3 таблиці).
4. Вивести список факультетів, що мають конкурс в 1,5 рази більше, ніж
середній показник.
5. Вивести список абітурієнтів, що подали заяви за два тижні до початку
іспитів.
Варіант 14
1. Вивести алфавітний список шахистів, що мають незавершені партії.
2. Вивести алфавітний список шахистів-гросмейстерів, вказати сумарну
кількість одержаних гонорарів, якщо нічого не одержано, то 0 (зовнішнє
з’єднання).
3. Вивести статистику по кількості шахистів кожного класу, що одержали
гонорар (використати всі 3 таблиці).
4. Вивести список шахистів, що одержали в 2 рази більше перемог, ніж
середній показник.
5. Вивести список шахистів, що не програли жодного разу.

6
Варіант 15
1. Вивести алфавітний список товарів, що придбали покупці.
2. Вивести алфавітний список покупців, вказати сумарну ціну покупок,
якщо нічого не придбано, то 0 (зовнішнє з’єднання).
3. Надати відомості про кількість покупців по кожного типу товару, які
звертались до продавця №4 (використати всі 3 таблиці).
4. Вивести список продавців, які продали товару на суму в 2 рази більше за
середній показник.
5. Вивести список товару, який купують більше місяця.
Варіант 16
1. Вивести список риб улову за місяць.
2. Вивести відсортований список бригад, вказати сумарну вагу їх уловів,
якщо нічого не виловлено, то 0 (зовнішнє з’єднання).
3. Навести дані за ресурсами вилову та кількості риби кожного типу, що
була спіймана (використати всі 3 таблиці).
4. Вивести список бригад, які за тиждень виловили в 1,3 рази більше, ніж
середній показник.
5. Вивести список риби, що є в наявності.
Варіант 17
1. Вивести назви мов програмування і ступінь володіння для службовця №2.
2. Вивести список мов програмування з кількістю співробітників, які
володіють мовою з середнім рівнем.
3. Вивести список співробітників, які володіють PL/SQL (використати 3
таблиці).
4. Вивести список співробітників і вказати кількість мов, якими вони
володіють і середній бал (якщо співробітник не володіє жодною мовою,
то у результаті повинні бути 0, використати зовнішнє з’єднання).
5. Вивести список назв мов програмування і прізвищ експертів для цих мов
(якщо їх декілька, то достатньо одного).

7
Варіант 18
1. Вивести алфавітний список учбових видань, виданих читачам.
2. Вивести алфавітний список читачів, вказуючи кількість виданої
літератури, якщо нічого не видано, то 0 (зовнішнє з’єднання).
3. Вивести для Канівського району статистику по кількості книг кожного
типу, що були використані читачем з цього району (використати всі 3
таблиці).
4. Вивести список читачів, що прочитали в 2 рази більше книг, ніж середній
показник.
5. Вивести список прізвищ злісних боржників (тих, хто не повертає 2 і
більше книг більше місяця).
Варіант 19
1. Вивести алфавітні списки прізвищ та ініціалів (перших букв імен і по-
батькові з крапкою) старост груп, із вказанням номерів груп.
2. Вивести прізвища студентів-заочників зі спеціальності «Програмне
забезпечення».
3. Вивести номера груп заочників, із вказанням кількості студентів в кожній
з них (якщо студентів немає, то 0, використати зовнішнє з’єднання).
4. Вивести список прізвищ студентів-заочників із середнім балом вище за
3.5.
5. Вивести номера груп і прізвища кращих студентів цих груп.
Варіант 20
1. Вивести список прізвищ та ініціалів (перших букв імен і по-батькові з
крапкою) авторів книги в порядку номерів в списку.
2. Вивести список назв книг, написаних Петровим.
3. Для кожного автору вивести максимальну і мінімальну ціну його книги.
4. Вивести для кожної книги кількість її авторів, якщо книга не має авторів,
то 0 (зовнішнє з’єднання).
5. Вивести список книг, які більше ніж в 2 рази дорожчі за середню ціну на
книгу їх типу.

8
Варіант 21
1. Вивести списки викладачів, які ведуть предмет із вказанням назв
предметів.
2. Вивести списки викладачів, які ведуть більше ніж 2 предмети.
3. Вивести списки професорів, які читають предмети для 1 курсу.
4. Вивести список прізвищ викладачів, які читають більше 2-х різних
предметів із зазначенням кількості предметів.
5. Вивести список предметів із зазначенням кількості викладачів, які їх
читають (якщо таких немає, то 0, використати зовнішнє з’єднання).
Варіант 22
1. Вивести алфавітний список предметів, що вивчаються групою 09, по
типам.
2. Вивести середню складність предметів, що вивчаються для кожної групи.
3. Вивести список предметів із кількістю студентів, що їх вивчає (якщо
предмет не вивчається жодною з груп, то 0, використати зовнішнє
з’єднання).
4. Вивести список предметів (без повторень), які вивчаються заочниками
програмістами.
5. Вивести список предметів, складність яких на 2 бали вище за середню.
Варіант 23
1. Вивести алфавітний список покупців товару №1.
2. Вивести алфавітний список покупців із вказанням загальної суми
замовлення (сума замовлення=ціна за одиницю*кількість одиниць).
3. Вивести назви всіх державних підприємств, що купляли алкоголь.
4. Вивести кількість замовлень на кожний товар (якщо немає, то 0,
використати зовнішнє з’єднання).
5. Вивести назву фірми і відомості про її останнє замовлення: дата,
кількість, назва товару.

9
Варіант 24
1. Вивести алфавітний список прізвищ студентів, що живуть в гуртожитку
№1.
2. Вивести список кімнат в гуртожитку №1, в яких є вільні місця.
3. Вивести список кімнат, в яких жив Петров.
4. Вивести список прізвищ студентів, які за рік переїжджали більше одного
разу.

Варіант 25
1. Вивести алфавітні списки прізвищ та ініціалів (перших букв імен і по-
батькові з крапкою) студентів, що займались 26.06.2000 в 508 аудиторії.
2. Вивести список комп’ютерів, на яких займався Петров за останній
тиждень.
3. Вивести номери непрацюючих комп’ютерів і прізвища студентів, які на
них займалися останніми.
4. Вивести список студентів, які зараз працюють за комп’ютером (з
незаповненим полем часу закінчення роботи).
5. Вивести список незайнятих комп’ютерів.
Варіант 26
1. Вивести алфавітні списки прізвищ і ініціалів хворих із діагнозом №1.
2. Визначити середній вік хворих, що мають діагноз №2.
3. Вивести списки назв діагнозів із зазначенням середнього віку хворих.
4. Для кожного хворого вивести кількість його діагнозів (якщо немає, то 0,
використати зовнішнє з’єднання).
5. Вивести останній на даний час діагноз для кожного хворого.
Варіант 27
1. Вивести алфавітні списки прізвищ і ініціалів лікарів, що приймають
хворих у вівторок.
2. Визначити середній вік хворих, що звернулись до невропатолога.
3. Вивести списки кабінетів, де приймають терапевти.

10
4. Для кожного лікаря вивести кількість його пацієнтів (якщо немає, то 0,
використати зовнішнє з’єднання).
5. Вивести кількість годин прийому Петровим за минулий тиждень.
Варіант 28
1. Вивести алфавітні списки прізвищ та ініціалів співробітників, які
проходили перепідготовку у середині року.
2. Вивести список курсів, що прослухав Петров за направленням №6 відділу
кадрів.
3. Вивести номери курсів і прізвища співробітників, які їх прослухали
останніми.
4. Вивести список співробітників, які зараз навчаються (поле закінчення
перепідготовки не заповнене).
5. Вивести список співробітників, які будуть навчатися у березні.

2.4 МЕТОДИКА ВИКОНАННЯ


Щоб створити запит, на панелі інструментів обирається

.
В Инструменты знаходиться перелік операцій і об’єктів, потрібно обрати
SQL Редактор.

У вікні, що з’явиться і потрібно створювати запит мовою SQL.

11
.

Для компіляції потрібно натиснути , щоб видалити запит – , для

створення нового запиту – .

2.5 ЗМІСТ ЗВІТУ


Розділ “Результати роботи” повинен містити скрипти і результати запитів.

2.6 КОНТРОЛЬНІ ПИТАННЯ

1. Чи будуть працювати наступні оператори SELECT? Якщо ні, то що в них


слід виправити?
а) SELECT SUM (SALARY), EMP_ID FROM EMPLOYEE_PAY_TBL
GROUP BY 1 AND 2;

б) SELECT EMP_ID, MAX(SALARY) FROM EMPLOYEE_PAY_TBL


GROUP BY SALARY, EMP_ID;
в) SELECT EMP_ID, COUNT(SALARY) FROM EMPLOYEE_PAY_TBL
ORDER BY EMP_ID GROUP BY SALARY;

2. Чи вірне наступне твердження: "При використанні ключового слова


HAVING необхідно використати також і ключове слово GROUP BY?"
3. Чи вірне наступне твердження: "Наступний оператор SQL повертає суми
зарплат по групам?"
SELECT SUM(SALARY)
FROM EMPLOYEE_PAY_TBL

12
4. Чи вірне наступне твердження: "Вибранні у запиті стовпчика повинні бути
присутні в списку ключового слова GROUP BY у тому ж порядку?"
5. Чи вірне наступне твердження: "Вираз ключового слова HAVING говорить
GROUP BY про те, які групи слід включити у виведення?"

13

You might also like