Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб4.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
154.11 Кб
Скачать

Помилки, що найбільш часто зустрічаються при виконанні group by

Якщо ви зробите спробу вказати у функції GROUP BY атрибут, якого немає в списку SELECT, то видається повідомлення про помилку.

Приклад 26

Задание.

Вивести назви всіх дисциплін, по яким середня оцінка менше 4.

Рішення:

SELECT NameSubject, ROUND(AVG(Mark),1)

FROM Progress P,Subject S

WHERE P.IDSubject=S.IDSubject

GROUP BY P.IDSubject

HAVING AVG(Mark)<4

Результат реалізації запиту:

Server: Msg 8120

Column 'S.NameSubject' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Інша помилка, що часто зустрічається пов’язана з тим, що у функції SELECT вказуються атрибути, які не являються параметрами групування чи агрегатної функції.

Приклад 27

SELECT NameSubject, P.IDSubject, ROUND(AVG(Mark),1)

FROM Progress P,Subject S

WHERE P.IDSubject=S.IDSubject

GROUP BY P.IDSubject

HAVING AVG(Mark)<4

Результат ркалізації запиту:

Server: Msg 8120

Column 'S.NameSubject' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Виходом з положення може бути групування по атрибуту NameSubject.

Функція order by

Функція ORDER BY дозволяє виконати сортування результатів запиту, вона завжди ставиться в кінці команди SELECT. По замовчуванню сортування йде по збільшуванню. Для зміни порядку сортування використовують опції ASC – збільшення або DESC – зменшення. При сортуванні по декільком стовпцям стовпці перераховуються через кому.

Приклад 28

Задача.

Вивести список студентів по збільшенню.

Рішення.

SELECT StName ФИО

FROM Student

ORDER BY StName;

Приклад 29

Задача.

Вивести список імен і оцінок студентів, розташувавши по збільшенню імена студентів, а також розташувавши для кожного студента його оцінки по збільшенню.

Рішення.

SELECT DISTINCT StName ФИО, Mark Оценка

FROM Student, Progress

WHERE Student.NRecordBook= Progress.NRecordBook

ORDER BY StName, Mark;

Завдання для лабораторної роботи

  1. 1. Сформувати запити для виконання завдань з вибраного варіанта.

Питання для самоконтолю по лабораторній роботі № 4

  1. Які функції в команді SELECT є обов’язковими?

  2. Яка з функцій використовується для виключення груп рядків з результату запиту?

  3. За допомогою якої функції створюються групи?

  4. В якому порядку в команді SELECT повинні розташовуватися функції ORDER BY, GROUP BY, WHERE?

  5. В чому різниця між функціями WHERE та HAVING?

  6. Чи завжди запит, що побудований з використанням функції HAVING може бути змінений в еквівалентний запит без використання цієї функції?

  7. Які функції дозволяють обмежити кількість рядків, що виводяться?

  8. В чому відмінність простого запиту від складного?

  9. За допомогою яких ключових фраз в команді SELECT здійснюється перевірка входження результату обчислення вираження в задану множину?

  10. Яка функція використовується для підрахунку кортежей, що відповідають заданій умові?

  11. Який вигляд буде мати команда SELECT, що реалізує операцію проекції на атрибути AB у відношенні зі схемою R=ABCD?

  12. Яка з функцій команди SELECT накладає обмеження на відбір груп?

  13. Як потрібно формувати запит до таблиці R1=AB и R2=CD, щоб отримати їх диктову множину?

  14. Чи можливо, використовуючи команду SELECT реалізувати операцію ділення?

  15. В яких випадках неможна для здійснення операції вибору використовувати функцію WHERE?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]