Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Язык SQL:использование агрегатных функций и вычисляемых полей.Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
1.Получить общее количество поставщиков (ключевое слово COUNT): SELECT COUNT(*) AS N FROM P; 2.В результате получим таблицу с одним столбцом и одной строкой, содержащей количество строк из таблицы P. Получить общее, максимальное, минимальное и среднее количества поставляемых деталей (ключевые слова SUM, MAX, MIN, AVG): SELECT SUM(PD.VOLUME) AS SM, MAX(PD.VOLUME) AS MX, MIN(PD.VOLUME) AS MN, AVG(PD.VOLUME) AS AV FROM PD; 3.Для каждой детали получить суммарное поставляемое количество (ключевое слово GROUP BY …): SELECT PD.DNUM, SUM(PD.VOLUME) AS SM GROUPBYPD.DNUM; Этот запрос будет выполняться следующим образом. Сначала строки исходной таблицы будут сгруппированы так, чтобы в каждую группу попали строки с одинаковыми значениями DNUM. Потом внутри каждой группы будет просуммировано поле VOLUME. От каждой группы в результатирующую таблицу будет включена одна строка. 4.Получить номера деталей, суммарное поставляемое количество которых превосходит 400 (ключевое слово HAVING …): Условие, что суммарное поставляемое количество должно быть больше 400 не может быть сформулировано в разделе WHERE, т.к. в этом разделе нельзя использовать агрегатные функции. Условия, использующие агрегатные функции должны быть размещены в специальном разделе HAVING: SELECT PD.DNUM, SUM(PD.VOLUME) AS SM GROUP BY PD.DNUM HAVING SUM(PD.VOLUME) > 400; Язык SQL:группировкастрок Группировка данных в операторе SELECT осуществляется с помощью ключевого слова GROUP BY и ключевого слова HAVING, с помощью которого задаются условия разбиения записей на группы. GROUP BY неразрывно связано с агрегирующими функциями, без них оно практически не используется. GROUP BY разделяет таблицу на группы, а агрегирующая функция вычисляет для каждой из них итоговое значение. Определим для примера количество книг каждего издательства в нашей базе данных:
SELECT таб1.поле1, count(таб2.поле2) FROM таб2,таб1 WHERE таб1.поле=таб2.поле GROUP BY таб1.поле1; Kлючевое слово HAVING работает следующим образом: сначала GROUP BY разбивает строки на группы, затем на полученные наборы накладываются условия HAVING. Включить в результат только те поля, данные которых оканчивается на подстроку "Press": SELECT таб1.поле, count(таб2.поле2) FROM таб1,таб2 WHERE таб1.поле1=таб2.поле1 GROUPBY таб1.поле HAVING таб1.поле LIKE '%Press';
Язык SQL:соединение таблиц. Выборка из двух таблиц путем их внутреннего соединения по столбцу КодРегиона SELECT Поставщик.ИмяПоставщика, Регион.Город, Регион.Факс, Поставщик.КодПоставщика FROM Регион INNER JOIN Поставщик ON Регион.КодРегиона = Поставщик.КодРегиона ORDERBYПоставщик.ИмяПоставщика
Язык SQL:внешнее соединение таблиц. Строки из таблицы, присоединенной внешним образом (на внешнее соединение указывает ключевое слово OUTER) будут выбираться не смотря на то, удовлетворяют они условиям WHERE предложения или нет. В некоторых случаях это полезно, когда у вас есть главная таблица и есть вспомогательная, и данные из главной таблицы вам нужно получить в любом случае. Примервнешнегосоединения: --------------------------------------------------------- SELECT company, order_num FROM customer c, OUTER orders o WHERE c.customer_num=o.customer_num --------------------------------------------------------- Запрос находит названия компаний и номера ордеров, которые они послали. Если же компания ордеров не присылала, то ее название все равно будет выбрано, а номер ордера в этой строке будет ра- вен NULL. (А если бы мы запустили запрос без параметра OUTER, то названия этих компаний вообще бы не попали в выборку.)
Язык SQL:использование подзапросов. Допустим нам необходимо найти сотрудников, которые получают больше чем сотрудник Smith. Решение данной задачи усложняется ввиду того, что для нахождения подобных сотрудников нам необходимо: 1. Узнать зарплату сотрудника Smith 2. Вытащить всех чья зарплата выше? чем зарплата полученная в предедущем шаге. На языке SQL это решение будет выглядитьввиде двух запросов, при этом один из запросов будет вложен в другой запрос. Запрос находящийся внутри другого запроса называеться – подзапросом. Подзапрос возвращает значение, которое будет использоваться в основном запросе. Использования подзапросов, есть использования по очереди двух запросов, сперва получаем данные из подзапроса, а затем используем эти данные в качестве данных основного запроса. Синтаксис и свойства подзапросов Синтаксис простого подзапроса выглядит так: SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table) Здесь в качестве оператора может играть роль такие операторы сравнения как >;>=;<;<=;OR;IN при работе с запросами возравщающие ровно одно значение, а также для решения задач запросами возвращающие множество строк используйте в качестве операторов IN; ANY; ALL. При этом сперва выполняется подзапрос (внутренней запрос), а результат операции будет передан основному запросу. Подзапрос – есть операция SELECT которая передает свое значения другому основному запросу. При этом возможности подзапроса велики, поэтому использования подзапросов открывает перед вами большие возможности. При этом возможно использовать подзапросы в следующих частях оператора SELECT:
Рассмотрим список правил, которые необходимо соблюдать во время построение подзапроса:
Типы подзапросов Как уже вы наверное понили из описания подзапросов существует два типа подзапросов:
Схема подзапроса возражающей одно значение: Схема подзапроса возражающей множество строк, хотя схематично изображено всего две строки, но на самом деле их может быть от двух и более. Подзапросы возражающие один результат Начнем разбирать все свойства, а также примеры подзапросов возражающих один результат. Конечно при работе с подзапросами мы используем операторы сравнения. Для работы с этим типом подзапросов используеться следующие операторы сравнения. Пример запроса – вывести всех сотрудников, чьи зарплаты больше зарплаты сотрудника SMITH:
SELECT * FROM emp WHERE sal> (SELECT sal FROM emp WHERE ename = 'SMITH')
Мы рассмотрели простой пример подзапроса, немного усложним логику запроса и получим: SELECT * FROM emp WHERE job = (SELECT job FROM emp WHERE ename = 'SMITH' ) AND sal> (SELECT MIN (sal) FROM emp ) Как можно заметить из примера в запросе можно использовать несколько подзапросов. В таком случаи результат будет получен сперва из подзапросов по очереди, а затем все данные полученные из подзапросов будут проставлены в качестве значений в основной запрос. Хотя в примерах указаны подзапросы берущие значения из одной таблицы, но подзапросы также могут брать значения из других таблиц. Также как вы заметили в данном примере, мы использовали одну из групповых функций. До сих пор мы рассмотрели примеры подзапросов работающих в условии WHERE, но на практике бывает необходимость использования подзапросов в разделе HAVING. Подзапрос в этом случаи будет выполнен и результат будет направлен в условия HAVING. Рассмотрим пример, где без подзапроса в разделе HAVING не обойтись. Допустим нам необходимо вычислить какой из отделов получает самую низкую среднеарифметичускую зарплату среди всех отделов компании.
SELECT job, avg(sal) FROM emp GROUP BY job HAVING AVG(sal) = (SELECT MIN(AVG(sal)) FROM emp GROUP BY job)
Язык SQL:операторы EXISTS, ANY, ALL в командах с подзапросом.
|
||||
Последнее изменение этой страницы: 2016-04-06; просмотров: 1112; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.114.150 (0.007 с.) |