[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
→‎Литература: дополнение
перенёс большую часть содержимого статей GROUP BY (SQL), Having (SQL) и ORDER BY (SQL)
Строка 27:
</source>
 
== Параметры оператора ==
Основные ключевые слова, относящиеся к запросу <code>SELECT</code>:
* <code>[[WHERE (SQL)|WHERE]]</code> — используется для определения, какие строки должны быть выбраны или включены в GROUP BY.
 
* <code>[[GROUP BY (SQL)|GROUP BY]]</code> — используется для объединения строк с общими значениями в элементы меньшего набора строк.
=== GROUP BY ===
* <code>[[HAVING]]</code> — используется для определения, какие строки после GROUP BY должны быть выбраны.
<code>GROUP BY</code> — необязательный параметр операторa <code>[[Select (SQL)|SELECT]]</code>, для группировки строк по результатам агрегатных функций (MAX, SUM, AVG, …).
* <code>[[ORDER BY (SQL)|ORDER BY]]</code> — используется для определения, какие столбцы используются для сортировки результирующего набора данных.
 
Необходимо, чтобы в SELECT были заданы только требуемые в выходном потоке столбцы, перечисленные в GROUP BY и/или агрегированные значения. Распространённая ошибка — указание в SELECT столбца, пропущенного в GROUP BY.
 
=== HAVING ===
<code>HAVING</code> — необязательный (опциональный) параметр оператора <code>[[Select (SQL)|SELECT]]</code>
для указания условия на результат агрегатных функций (MAX, SUM, AVG, …).
 
<code>HAVING <условия></code> аналогичен <code>WHERE <условия></code> за исключением того, что строки отбираются не по значениям столбцов, а строятся из значений столбцов, указанных в <code>[[GROUP BY (SQL)|GROUP BY]]</code>, и значений агрегатных функций, вычисленных для каждой группы, образованной GROUP BY.
 
Необходимо, чтобы в SELECT были заданы только требуемые в выходном потоке столбцы, перечисленные в GROUP BY и/или агрегированные значения. Распространённая ошибка — указание в SELECT столбца, пропущенного в GROUP BY.
 
Если параметр GROUP BY в SELECT не задан, HAVING применяется к «группе» всех строк таблицы, полностью дублируя <code>[[WHERE]]</code> (допускается не во всех реализациях стандарта [[SQL]]).
 
=== ORDER BY ===
<code>ORDER BY</code> — необязательный (опциональный) параметр операторов <code>[[Select (SQL)|SELECT]]</code> и <code>[[Union (SQL)|UNION]]</code>, который означает что операторы <code>[[Select (SQL)|SELECT]]</code>, <code>[[Union (SQL)|UNION]]</code> возвращают набор строк, отсортированных по значениям одного или более столбцов. Его можно применять как к числовым столбцам, так и к строковым. В последнем случае, сортировка будет происходить по алфавиту.
 
Использование предложения <code>ORDER BY</code> является единственным способом отсортировать результирующий набор строк. Без этого предложения СУБД может вернуть строки в любом порядке. Если упорядочение необходимо, <code>ORDER BY</code> должен присутствовать в <code>SELECT</code>, <code>UNION</code>.
 
Сортировка может производиться как по возрастанию, так и по убыванию значений.
* Параметр <code>ASC</code> (по умолчанию) устанавливает порядок сортирования по возрастанию, от меньших значений к большим.
* Параметр <code>DESC</code> устанавливает порядок сортирования по убыванию, от больших значений к меньшим.
 
== Примеры ==
Строка 118 ⟶ 139 :
{{-}}
 
Отбирает все строки, где поле column_name равенравно одному из перечисленных значений value1,value2,…<br>
<source lang="sql">
SELECT *
FROM table_name
WHERE column_name IN (value1,value2,...)
</source>
 
Возвращает список идентификаторов отделов, продажи которых превысили 1000 долларов за 1 января 2000 года, вместе с суммами продаж за этот день:
<source lang="sql">
SELECT DeptID, SUM(SaleAmount) FROM Sales
WHERE SaleDate = '01-Jan-2000'
GROUP BY DeptID
HAVING SUM(SaleAmount) > 1000
</source>
 
Строка 211 ⟶ 240 :
 
== Литература ==
* Chamberlin, Donald D. [http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6359709 Early history of SQL]. // IEEE Annals of the History of Computing 34.4 (2012): 78-82. {{ref-en}}
* Alex Kriegel, Boris M. Trukhnov. SQL Bible (2nd ed.). Wiley Publishing, 2008. {{ref-en}}
* {{книга
|автор = Грубер М.
|заглавие = Понимание SQL
|город = Москва
|издательство =
|год = 1993
|страниц = 291
}}
 
{{SQL}}