Select (SQL): различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
Содержимое удалено Содержимое добавлено
Викидим (обсуждение | вклад) →Литература: дополнение |
Altes (обсуждение | вклад) перенёс большую часть содержимого статей GROUP BY (SQL), Having (SQL) и ORDER BY (SQL) |
||
Строка 27:
</source>
== Параметры оператора ==
=== GROUP BY ===
<code>GROUP BY</code> — необязательный параметр операторa <code>[[Select (SQL)|SELECT]]</code>, для группировки строк по результатам агрегатных функций (MAX, SUM, AVG, …).
Необходимо, чтобы в 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
<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.
* Alex Kriegel, Boris M. Trukhnov. SQL Bible (2nd ed.). Wiley Publishing, 2008.
* {{книга
|автор = Грубер М.
|заглавие = Понимание SQL
|город = Москва
|издательство =
|год = 1993
|страниц = 291
}}
{{SQL}}
|