русс | укр

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

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

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

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


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

Группирование строк


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


Строки, возвращаемые SELECT-запросом, могут быть объединены в группы на основе значений определенного выражения для каждой стро-ки. Примером такого группирования может служить объединение в группы книг одного жанра, информация о которых имеется в таблице KNIGA. Так как в таблице присутствуют книги только трех жанров, то будут сформированы только три группы строк. Применив к каждой группе функцию SUM для столбца, содержащего значение цены, можно получить суммарную величину стоимости книг по каждому жанру. Для осуществления группирования используется конструкция GROUP BY оператора SELECT, в которой указывается перечень, состоящий из одно-го или нескольких выражений, разделенных запятыми, по значениям ко торых и осуществляется группирование. Если оператор SELECT содер-жит пункт GROUP BY, то список извлекаемых значений ограничен. Он может содержать константы, групповые функции, функцию SYSDATE и выражения, идентичные выражениям, указанным в пункте GROUP BY. На формирование результирующих строк могут быть наложены опреде-ленные условия. Для задания такого условия используется ключевое сло-во HAVING.

Демонстрационные примеры

1.Выбрать из таблицы KNIGA информацию о количестве различных жанров:

SELECT COUNT(DISTINCT ЖАНР) FROM KNIGA;

2.Выбрать из таблицы KNIGA информацию о количестве, суммарной стоимости и максимальной стоимости имеющихся книг:

SELECT COUNT(КОД_КНИГИ), SUM(ЦЕНА), MAX(ЦЕНА) FROM KNIGA;

3.Выбрать из таблицы KNIGA по каждому издательству информацию о количестве и суммарной стоимости изданных им книг, сгруппировав ее по жанрам:

SELECT ИЗДАТЕЛЬСТВО, ЖАНР, COUNT(НАЗВАНИЕ), SUM(ЦЕНА) FROM KNIGA GROUP BY ИЗДАТЕЛЬСТВО, ЖАНР;

4.Выбрать из таблицы KNIGA информацию о количестве и средней стоимости (округлив значение средней стоимости до двух знаков после запятой) книг в тех жанрах, где количество различных названий книг не менее 4:



SELECT ЖАНР, COUNT(DISTINCT НАЗВАНИЕ), ROUND(AVG(ЦЕНА), 2) FROM KNIGA GROUP BY ЖАНР

HAVING COUNT(DISTINCT НАЗВАНИЕ) >= 4;

5.Выбрать из таблицы KNIGA информацию о минимальной стоимо-сти книг в жанре «Роман»:

SELECT MIN(ЦЕНА) FROM KNIGA WHERE ЖАНР = 'Роман';

6.Выбрать из таблицы KNIGA информацию о самой дешевой книге в жанре «Роман»:

SELECT АВТОР, НАЗВАНИЕ, ЦЕНА FROM KNIGA

WHERE ЦЕНА = (SELECT MIN(ЦЕНА) FROM KNIGA WHERE ЖАНР = 'Роман') AND ЖАНР = 'Роман';

7.Выбрать из таблицы KNIGA информацию (фамилия автора, назва-ние жанр, цена) о книгах, имеющих максимальную стоимость в своем жанре:

а) SELECT АВТОР, НАЗВАНИЕ, ЖАНР, ЦЕНА FROM KNIGA WHERE (ЦЕНА, ЖАНР) IN (SELECT MAX(ЦЕНА), ЖАНР FROM KNIGA GROUP BY ЖАНР);

б) SELECT АВТОР, НАЗВАНИЕ, KNIGA.ЖАНР, ЦЕНА FROM KNIGA, (SELECT ЖАНР, MAX(ЦЕНА) МАКС FROM KNIGA GROUP BY ЖАНР) P1 WHERE ЦЕНА = МАКС AND KNIGA.ЖАНР = P1.ЖАНР;

в) SELECT АВТОР, НАЗВАНИЕ, ЖАНР, ЦЕНА FROM KNIGA P1 WHERE ЦЕНА = (SELECT MAX(ЦЕНА) FROM KNIGA WHERE KNIGA.ЖАНР = P1.ЖАНР);

П о я с н е н и е. Третий запрос содержит коррелированный подза-прос. Поскольку в своем условии подзапрос содержит ссылку на столбец родительского запроса, поэтому он будет выполняться один раз для каж-дой строки, извлекаемой родительским запросом. В первом и во втором вариантах подзапрос не является коррелированным, он выполняется только один раз для родительского запроса.

8.Выбрать из таблицы KNIGA информацию о книгах, стоимостью больше средней стоимости книг:

SELECT АВТОР, НАЗВАНИЕ, ЦЕНА FROM KNIGA WHERE ЦЕНА > (SELECT AVG(ЦЕНА) FROM KNIGA);

9.Выдать из таблицы KNIGA список жанров, по которым имеется наибольшее количество различных книг, с указанием количества книг:

SELECT ЖАНР, COUNT(DISTINCT НАЗВАНИЕ) FROM KNIGA

GROUP BY ЖАНР HAVING COUNT(DISTINCT НАЗВАНИЕ)=

(SELECT MAX(COUNT(DISTINCT НАЗВАНИЕ)) FROM KNIGA

GROUP BY ЖАНР);

10.Выбрать из таблицы KNIGA информацию о книгах (фамилия ав-тора, название), относящихся к жанрам, по которым имеется наибольшее количество различных книг:

SELECT АВТОР, НАЗВАНИЕ FROM KNIGA WHERE ЖАНР IN

(SELECT ЖАНР FROM KNIGA GROUP BY ЖАНР HAVING

COUNT(DISTINCT НАЗВАНИЕ)=

(SELECT MAX(COUNT(DISTINCT НАЗВАНИЕ)) FROM KNIGA

GROUP BY ЖАНР));



<== предыдущая лекция | следующая лекция ==>
Построение простейших запросов для выбора информации из одной таблицы | Выбор информации из нескольких таблиц (соединение)


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


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

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

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


 


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

 
 

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

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