Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Значення NULLв стовпчиках групування




Обмеження на запити з групуванням

Pracivnyk

ORDER BY Klient,

Pracivnyk

GROUP BY Klient,

FROM Zamovlennia

SUM (Kilkist)

Pracivnyk,

Klient

GROUP BY Pracivnyk,

FROM Zamovlennia

SUM (Kilkist)

Klient,

Навіть при групуванні по двом стовпчикам SQL забезпечує лише один рівень групування.

Запит 21) генерує лише один підсумковий рядок для кожної пари працівник – клієнт.

За допомогою SQL неможливо створити групи і підгрупи з двома (чи більшою кількістю) рівнями підсумкових результатів.

Найкраще, що можна зробити – це відсортувати дані таким чином, щоб рядки в таблиці результатів запиту розміщувалися в потрібному порядку.

В багатьох СУБД при використанні GROUP BY сортування виконується автоматично, але автоматичний порядок сортування можна поміняти за допомогою секції ORDER BY:

22). Підрахувати загальну кількість замовлень по кожному клієнту для кожного працівника, відсортувати результати запиту по клієнтам і працівникам:

22). SELECT Klient,

За допомогою одного SQL – запиту неможливо отримати як детальні, так і проміжні підсумкові результати.

Для того, щоб отримати детальні результати з підсумками по групам – необхідно написати програму, яка обчислює ці проміжні підсумкові результати (це може робити Quick Report)

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

Крім того, існують обмеження на елементи списку полів секції SELECT. Всі елементи цього списку повинні мати одне значення для кожної групи рядків. Це означає, що елементом списку полів секції SELECT може бути:

- константа;

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

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

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

На практиці в список полів секції SELECT запита з угрупуванням завжди входять стовпчик групування і статистична функція. Якщо не вказано статистичної функції – значить запит можна зробити простішим за допомогою ключового слова DISTINCT без використання секції GROUP BY. Якщо ж не включати в результати запиту стовпчик групування, то не можна визначити, до якої групи належить кожний рядок результатів!

Коли в стовпчику групування міститься значення NULL, виникають додаткові ускладнення: якщо значення стовпчика невідоме, то до якої групи його потрібно віднести?

В секції WHERE при порівнянні двох значень NULL результат має значення NULL (а не TRUE) тобто два значення NULL не вважається однаковими! Якщо таке правило застосовувати в секції GROUP BY, то це приведе до того, що кожний рядок із значенням NULL в стовпчику групування буде занесений в окрему групу, яка складається із одного цього рядка.

На практиці – це дуже незручно. Тому в стандарті SQL визначається, що два значення NULL в секції GROUP BY – співпадають! Тобто, якщо два рядка мають значення NULL в однакових стовпчиках групування та ідентичні значення у всіх інших стовпчиках групування, то вони заносяться в одну групу.

 

Хоча такий принцип опрацювання значень NULL визначений в стандарті SQL, він реалізований не для всіх діалектів SQL - потрібно перевірити комерційну СУБД.

Нехай

People
Name Hair Eyes
Cindy Louise Harry Samantha Joanne George Mary Paula Kevin Joel Susan Marie Brown NULL NULL NULL NULL Brown Brown Brown Brown Brown Blonde Blonde Blue Blue Blue NULL NULL NULL NULL NULL NULL Brown Blue Blue

(при виконанні таких прикладів на ЕОМ значення NULL – не вводяться, - треба замість них залишати порожні клітинки!)

 

23). SELECT Hair, Eyes, COUNT (*)




Поделиться с друзьями:


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


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



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




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