Сортировка и группировка строк таблицы


Дата добавления: 2014-11-24 | Просмотров: 1561


<== предыдущая страница | Следующая страница ==>

ПредложениеORDER BY позволяет установить желаемый порядок просмотра результирующей таблицы (отсортировать таблицу).

Фактически задается список столбцов результирующей таблицы, и для каждого столбца указывается порядок просмотра строк результата в зависимости от значений этого столбца (ASC - по возрастанию (умолча­ние), DESC - по убыванию). Столбцы можно задавать их именами тогда и только тогда, когда в списке выборки в предложении SELECT этому столбцу соответствует арифметическое выражение, состоящее только из имени столбца. Во всех остальных случаях в разделе ORDER BY должен указываться порядковый номер столбца в таблице-результате.

Ø SELECT <список выборки> FROM <таблицы>

ORDER BY <столбец / целое число> [ASC / ESC] [ ,<столбец/ целое число>[ASC/ESC]...];

Пример. Вывести список заказчиков в алфавитном порядке фами­лий: SELECT Номер_заказчика, Фамилия_заказчика FROM Заказчики ORDER BY 2;

ПредложениеGROUP BY позволяет объединить строки результи­рующей таблицы в группы с одинаковыми значениями столбцов.

Если R - это таблица, являющаяся результатом предыдущего разде­ла (FROM или WHERE), то результатом раздела GROUP BY является раз­биение R на множество групп строк. Это множество состоит из мини­мального числа таких групп, в которых для каждого столбца из списка столбцов раздела GROUP BY во всех строках каждой группы, включаю­щей более одной строки, значения этого столбца совпадают.

Пример. Вывести номера, описание и количество товара, объеди­ненные в группы с совпадающими описаниями товара.

SELECT Номер, Описание, Количество FROM Товар

GROUP BY Описание;

Условие поиска предложенияHAVING задает условие на группу строк сгруппированной таблицы. Условие поиска предложения HAVING строится по тем же синтаксическим правилам, что и условие поиска пред­ложения WHERE, и может включать те же самые предикаты.! (см. п. 2.3.). Однако в арифметических выражениях предикатов, входящих в условие выборки предложения HAVING, прямо можно использовать только столбцы, указанные в качестве столбцов группирования в разделе GROUP BY. Остальные столбцы можно использовать только внутри специфика­ций агрегатных функций COUNT, SUM, AVG, MIN и MAX, вычисляю­щих в данном случае некоторое агрегатное значение для всей группы строк.

Например, нельзя писать

SELECT Номер_Продавца, МАХ(Сумма) FROM Заказы

GROUP BY Номер_Продавца

HAVING Дата_3аказа='10.03.98';

для вывода наибольшей суммы, полученной каждым Продавцом 10 марта.

Поле Дата Заказа нельзя использовать в предложении HAVING, т.к. оно может иметь больше чем одно значение на группу вывода. Правильно записывается SELECT Номер_Продавца, МАХ(Сумма) FROM Заказы WHERE Дата_3аказа=' 10.03.98' GROUP BY Номер Продавца;

Результатом выполнения предложения HAVING является сгруппи­рованная таблица, содержащая только те группы строк, дли которых вы­полняется условие поиска.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |

При использовании материала ссылка на сайт Конспекта.Нет обязательна! (0.048 сек.)