Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

T. Najavna_Kilkist DESC

ORDER BY

HAVING

T. Najavna_Kilkist

T. Cina,

T. Nazva,

T. Kod Tovaru,

T. Kod Vyrobn,

GROUP BY

WHERE

Zamovlennia Z

FROM Tovary T,

SUM (Z.Kilkist)

T. Najavna_Kilkist,

T. Cina,

T. Nazva,

Z. Kod Vyrobn = T. Kod Vyrobn

AND Z. Kod Tovaru = T. Kod Tovaru

SUM (Z.Kilkist) > (0.75 * T. Najavna_Kilkist)

При реалізації цього запиту СУБД виконує дії:

1. Сполучає таблиці Tovary та Zamovlennia, щоб отримати назву, ціну і наявну на складі кількість одиниць для кожного замовленого товару.

2. Групує рядки сполучуваної таблиці по коду виробника та коду товару.

3. Вилучає групи, в яких кількість замовлених одиниць становить не більше 75% від кількості на складі.

4. Обчислює загальну кількість замовлених одиниць для кожної групи.

5. Генерує один підсумковий рядок запиту для кожної групи.

6. Сортує результати запиту таким чином, щоб товари, яких на складі більше, йшли першими.

Як було сказано раніше, стовпчики T. Nazva, T. Cina, T. Najavna_Kilkist повинні бути вказані в списку стовпчиків групування секції GROUP BY – бо вони є в списку результуючих стовпчиків секції SELECT.

Але фактично вони не приймають участі в процесі групування, бо стовпчики T. Kod Vyrobn та T. Kod Tovaru повністю визначають рядок таблиці Tovary і стовпчики T. Nazva, T. Cina, T. Najavna_Kilkist автоматично мають в групі одне значення.

9.2. Обмеження на умову відбору груп

Секція HAVING використовується для того, щоб включати і виключати групи рядків із результатів запиту, тому умова відбору застосовується не до окремих рядків, а до групи в цілому.

Це означає, що в умову відбору груп може входити:

- константа;

- статистична функція, яка повертає одне значення для всіх рядків, що входять у групу;

- стовпчик групування, який за означенням має одне і те саме значення у всіх рядках групи;

- вираз, який складається із всіх вищевказаних елементів.

На практиці умова відбору в секції HAVING завжди повинна містити як мінімум одну статистичну функцію.

Якщо це не так – то таку умову можна перемістити в секцію WHERE. Щоб визначити, де слід вказувати умову відбору – в секції WHERE чи в секції HAVING – треба згадати як вони застосовуються:

- секція WHERE застосовується до окремих рядків – умова секції WHERE щоразу обчислюється для кожного окремого рядка. Статистичні функції не можуть входити в умову секції WHERE.

- секція HAVING застосовується до груп рядків, тому умова секції HAVING обчислюється для кожної групи – один раз для усієї групи.

Значення NULLі умови відбору груп

Як і в секції WHERE, умова відбору в секції HAVING може дати один із наступних результатів:

- якщо умова отримує значення TRUE, то така група рядків залишається і для неї генерується один єдиний рядок таблиці результатів запиту.

- якщо умова отримує значення FALSE або NULL – то група рядків ігнорується і для такої групи ніякий рядок таблиці результатів не створюється.

Правила опрацьовування значень NULL в умовах відбору для секції HAVING – ті самі, що і для секції WHERE.

Секція HAVING без секції GROUP BY

Секції HAVING майже завжди використовується разом із секцією GROUP BY, але синтаксис оператора SELECT цього не вимагає.

Якщо секції HAVING використовується без секції GROUP BY, СУБД вважає всі результати запиту однією групою. Тобто, статистичні функції, вказані в секції HAVING, застосовуються до однієї і лише однієї групи і ця група складається із усіх рядків.

На практиці секція HAVING дуже рідко використовується без відповідної секції GROUP BY.


Лекція №15. Складні умови відбору. Використання логічних виразів.

Складні умови відбору у запитах на вибірку даних

Використання логічних виразів

Складні логічні вирази будуються за допомогою операцій AND,OR і NOT.

Їх використання, а також побудова за їх допомогою складних виразів визначається стандартними правилами, які прийняті в більшості алгоритмічних мов (в т.ч. Pascal).

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

 
 

 


*! Значення NULLвпливають на інтерпретацію складних умов відбору, внаслідок чого результати останніх стають не такими очевидними.

Операція OR використовується для об’єднання двох умов, із яких як мінімум одна повинна бути істинною.

Для об’єднання двох умов, обидві із яких повинні бути істинними, потрібно використовувати операцію AND.

Операція NOT використовується для вибору рядків, для яких умова відбору хибна.

Якщо за допомогою операцій AND, OR і NOT об’єднуються більш, ніж дві умови відбору, то згідно стандарту SQL: операція NOT має найвищий пріоритет, наступний пріоритет має операція AND, операція OR має самий низький пріоритет. Але, щоб гарантувати правильне виконання SQL – запиту на будь-якій платформі, потрібно використовувати круглі дужки – це дозволить усунути всі можливі неоднозначності.

Порівняння

 
 

 

 


Коли порівнюються два вирази, результатом може бути одне з трьох:

· якщо порівняння – істинне, то результат перевірки матиме значення TRUE;

· якщо порівняння – хибне, то результат перевірки буде мати значення FALSE;

· якщо хоча би один із двох виразів має значення NULL, то результат перевірки буде мати значення NULL.

Синтаксична діаграма виразу:

На практиці найчастіше використовуються такі порівняння:

 
 

 


або

 
 


Перевірка на належність діапазону значень(BETWEEN…AND…)

 
 

 


Вивести дані про всі відпуски товару, у яких кількість (в одиницях) відпущеного товару лежить в діапазоні від 1000 до 3000:

SELECT *

<== предыдущая лекция | следующая лекция ==>
GROUP BY Pokupets | Where kilkist between 1000 and 3000
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 303; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.021 сек.