MS SQL-Server 2000. Сивохин А.В. - 39 стр.

UptoLike

Составители: 

Логическое условие может быть произвольным, в том числе и не связанным с данными.
Оно может включать логические операторы NOT, AND и OR. В ряде случаев, в особенности для
сложных запросов предпочтительнее использовать условия связывания * = (аналог LEFT OUTER
JOIN) или = * (аналог RIGHT OUTER JOIN), которые выполняются гораздо эффективнее.
Раздел GROUP BY позволяет выполнить группировку строк таблиц по определенным
критериям. Для каждой группы можно выполнить специальные функции агрегирования, которые
будут применены ко всем строкам группы:
AVG (имя столбца) – среднее значение в группе;
SUM (имя столбца) – сумма значений группы;
MIN (имя столбца) – минимальное значение в группе;
MAX (имя столбца) – максимальное значение в группе;
COUNT (имя столбца) – число строк в группе с непустым значением;
COUNT (*) – число строк в группе, включая и пустые (NULL).
Синтаксис раздела следующий:
GROUP BY условие группировки --или BY ALL
[WITH CUBE или ROLLUP] --супергруппировка.
В качестве условия группировки задается имя одного или нескольких столбцов таблицы.
Именно эти столбцы должны быть включены в запрос. Наличие других столбцов не допускается.
Если в запросе было определено условие, сужающее диапазон группировки выбираемых строк, то
включение слова ALL обеспечит вывод всех групп, но функции агрегирования для
дополнительных групп выполняться не будут.
Ключевое слово WITH CUBE инициирует суперагрегирование, когда в результат
включаются строки, являющиеся результатом агрегирования уже агрегированных данных. В итоге
получается многоуровневое агрегирование с итоговыми данными по всем уровням. Опция WITH
ROLLUP позволяет устранить лишние строки при суперагрегировании.
Раздел HAVING задает условия поиска при определении групп с помощью раздела
GROUP BY:
HAVING условие поиска
Этот раздел аналогичен разделу WHERE.
Раздел UNION позволяет выполнить объединение данных из нескольких таблиц,
имеющих одинаковый список столбцов, порядок их следования и свойства, при этом по
умолчанию дублирующие строки не включаются, если не задано ключевое слово ALL:
SELECT список столбцов FROM имя первой таблицы
UNION [ALL]
SELECT список столбцов FROM имя второй таблицы
и т.д.
Раздел ORDER BY используется, когда необходимо отсортировать данные в
результирующем наборе:
ORDER BY имя столбца в запросе [ASC или DESC],
имя столбца в запросе [ASC или DESC]…
Здесь ключевые слова ASC и DESC обеспечивают сортировку соответственно по
возрастанию или убыванию значений в соответствующем столбце.
Раздел COMPUTE позволяет применять к выбираемым столбцам функции
агрегирования:
COMPUTE функция агрегирования (имя столбца запроса)
        Логическое условие может быть произвольным, в том числе и не связанным с данными.
Оно может включать логические операторы NOT, AND и OR. В ряде случаев, в особенности для
сложных запросов предпочтительнее использовать условия связывания * = (аналог LEFT OUTER
JOIN) или = * (аналог RIGHT OUTER JOIN), которые выполняются гораздо эффективнее.
        Раздел GROUP BY позволяет выполнить группировку строк таблиц по определенным
критериям. Для каждой группы можно выполнить специальные функции агрегирования, которые
будут применены ко всем строкам группы:

        AVG (имя столбца) – среднее значение в группе;
        SUM (имя столбца) – сумма значений группы;
        MIN (имя столбца) – минимальное значение в группе;
        MAX (имя столбца) – максимальное значение в группе;
        COUNT (имя столбца) – число строк в группе с непустым значением;
        COUNT (*) – число строк в группе, включая и пустые (NULL).

        Синтаксис раздела следующий:

        GROUP BY условие группировки --или BY ALL
           [WITH CUBE или ROLLUP] --супергруппировка.

         В качестве условия группировки задается имя одного или нескольких столбцов таблицы.
Именно эти столбцы должны быть включены в запрос. Наличие других столбцов не допускается.
Если в запросе было определено условие, сужающее диапазон группировки выбираемых строк, то
включение слова ALL обеспечит вывод всех групп, но функции агрегирования для
дополнительных групп выполняться не будут.
         Ключевое слово WITH CUBE инициирует суперагрегирование, когда в результат
включаются строки, являющиеся результатом агрегирования уже агрегированных данных. В итоге
получается многоуровневое агрегирование с итоговыми данными по всем уровням. Опция WITH
ROLLUP позволяет устранить лишние строки при суперагрегировании.
         Раздел HAVING задает условия поиска при определении групп с помощью раздела
GROUP BY:

        HAVING условие поиска

       Этот раздел аналогичен разделу WHERE.
       Раздел UNION позволяет выполнить объединение данных из нескольких таблиц,
имеющих одинаковый список столбцов, порядок их следования и свойства, при этом по
умолчанию дублирующие строки не включаются, если не задано ключевое слово ALL:

        SELECT список столбцов FROM имя первой таблицы
              UNION [ALL]
        SELECT список столбцов FROM имя второй таблицы
        и т.д.

        Раздел ORDER BY используется, когда необходимо отсортировать              данные   в
результирующем наборе:

        ORDER BY        имя столбца в запросе [ASC или DESC],
                        имя столбца в запросе [ASC или DESC]…
        Здесь ключевые слова ASC и DESC обеспечивают сортировку соответственно по
возрастанию или убыванию значений в соответствующем столбце.
         Раздел COMPUTE позволяет применять к выбираемым столбцам функции
агрегирования:

        COMPUTE функция агрегирования (имя столбца запроса)