русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Розділ GROUP BY


Дата добавления: 2015-07-09; просмотров: 622; Нарушение авторских прав


 

Розділ GROUP BY дозволяє розбити виборку на декілька (підмножину) груп по заданому критерію.

Якщо позначити через R таблицю, яка є результатом попереднього розділу (FROM або WHERE), то результатом розділу GROUP BY буде розбиття R на кілька груп рядків, в яких для кожного стовпчика з списку стовпчиків розділу GROUP BY в усіх рядках кожної групи, значення цього стовпчика співпадають. Для позначення результату розділу GROUP BY в стандарті використовується термін "згрупована таблиця".

 

Синтаксис розділу GROUP BY такий:

GROUP BY <колонка> [, <колонка>...]

 

Дуже часто при групуванні даних використовуються функції агрегування.

 

Агрегатні функції потрібні для того, щоб обчислювати деяке значення для заданої множини рядків. Такою множиною рядків може бути група рядків, якщо агрегатна функція застосовується до згрупованої таблиці, або вся таблиця. Для всіх агрегатних функцій, крім COUNT(*), фактичний (тобто описаний семантикою) порядок обчислень наступний: на підставі параметрів агрегатної функції із заданої множини рядків виробляється список значень. Потім по цьому списку значень проводиться обчислення функції. Якщо список виявився порожній, значення функції COUNT() для нього дорівнює 0, а значення всіх інших функцій null.

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

 

COUNT (*) - число значень у стовпчику,

SUM (стовпчик)- сума значень у стовпчику,

AVG (стовпчик) - середнє значення у стовпчику,

MAX (стовпчик)- саме велике значення у стовпчику,

MIN (стовпчик) - саме мале значення у стовпчику.

 

Для функцій SUM і AVG розглядуваний стовпчик повинен містити числові значення.



 

Слід відзначити, що тут стовпчик - це стовпчик віртуальної таблиці, в якій можуть міститися дані не тільки з стовпчика базової таблиці, але і дані, отримані шляхом функціонального перетворення і (або) зв'язування символами арифметичних операцій значень з одного або декількох стовпчиків. При цьому вираз, який визначає стовпчик такої таблиці, може бути складним, але не повинен містити SQL-функцій (вложенність SQL-функцій не допускається). Однак з SQL-функцій можна складати будь-які вирази.

 

Аргументу всіх функцій, окрім COUNT (*), може передувати ключове слово DISTINCT, яке вказує, що значення, які дублюються повинні бути виключені перед тим, як буде застосовуватися функція. Спеціальна ж функція COUNT (*) служить для підрахунку всіх без винятку рядків у таблиці (включаючи дублікати).

 

 

Наприклад,

Задані таблиці Dogovor, Org, Tovar.

Dogovor

N Kod_org Kod_tov K_vo

 

Tovar       Org  
Kod_tov Nazv Price   Kod_org Nazv
Папір 7.00   Орг1
Ручка 1.00   Орг2
Олівець 0.50   Орг3

 

 

SELECT Організація=org.nazv, Товар=tovar.nazv, Ціна=tovar.price

FROM dogovor, org, tovar

WHERE dogovor.kod_org=org.kod_org AND dogovor.kod_tov=tovar.kod_tov

GROUP BY dog.kod_org, tovar.kod_tov

 

Результат:

Організація Товар Ціна  
Орг1 Папір 7.00  
Орг1 Ручка 1.00  
Орг2 Папір 7.00  

 

 

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

Наприклад, для заданих таблиць Dogovor, Org, Tovar, отримаємо більш розширений запит:

 

SELECT Організація=org.nazv, Товар=tovar.nazv, Ціна=tovar.price,

SUM(dogovor.k_vo) AS Кількість, SUM(tovar.price*dogovor.k_vo) AS Сума

FROM dogovor, org, tovar

WHERE dogovor.kod_org=org.kod_org AND dogovor.kod_tov=tovar.kod_tov

GROUP BY dog.kod_org, tovar.kod_tov

 

Результат:

Організація Товар Ціна Кількість Сума
Орг1 Папір 7.00 35.00
Орг1 Ручка 1.00 4.00
Орг2 Папір 7.00 84.00

 

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

Дані беруться з таблиці Podr

N_podr FIO Szar
Іванов
Петров
Попов
Сокол
Павлов

 

SELECT podr, count(*) AS kv, sum(szar)

FROM podr

GROUP BY podr INTO TABLE vidom

 

Результат:

N_podr Kv SUM_Szar

 



<== предыдущая лекция | следующая лекция ==>
Предикат in | Розділ HAVING


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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