mirror of
https://github.com/janishutz/eth-summaries.git
synced 2026-07-27 21:29:09 +02:00
42 lines
1.8 KiB
TeX
42 lines
1.8 KiB
TeX
\newpage
|
|
\subsubsection{Aggregations, Grouping, Sorting}
|
|
\paragraph{Aggregations}
|
|
\sql\ supports (at least) the aggregation functions \texttt{SUM}, \texttt{MIN}, \texttt{MAX}, \texttt{AVG}, \texttt{COUNT},
|
|
whose output should be evident.
|
|
|
|
Please note that you cannot use the aggregation functions and still output another column,
|
|
as they produce a single value.
|
|
|
|
For each of the functions, you can optionally specify \texttt{DISTINCT}.
|
|
|
|
We typically want to specify an \texttt{AS} clause, to make the output nicer to read
|
|
|
|
|
|
\paragraph{Grouping}
|
|
Grouping is used to, well, group together the outputs on a column.
|
|
Using SQL, this is achieved using the \texttt{GROUP BY} clause.
|
|
We specify the columns on which the grouping should occur.
|
|
|
|
\hl{\textbf{\textit{IMPORTANT}}} We can only use aggregates and columns appearing in the \texttt{GROUP BY} clause in the \texttt{SELECT} clause.
|
|
|
|
Using a \texttt{JOIN} function, it is of course then possible to go back retrieve the other columns.
|
|
|
|
To apply filtering on the columns, the \texttt{HAVING} clause can be used.
|
|
It applies a comparison to a grouping column or an aggregate as specified in the \texttt{SELECT} clause:
|
|
\mint{sql}|SELECT COUNT(name) as cnt FROM Students GROUP BY Department HAVING cnt > 1;|
|
|
|
|
|
|
\paragraph{Sorting}
|
|
We can sort the output of any query using the \texttt{ORDER BY column DIRECTION} clause, where \texttt{DIRECTION} is to be replaced with \texttt{ASC} or \texttt{DESC}:
|
|
\mint{sql}|SELECT name FROM Students ORDER BY name DESC;|
|
|
|
|
|
|
\paragraph{Limit}
|
|
We can limit the number of columns to return using the \texttt{LIMIT} clause. Example:
|
|
\mint{sql}|SELECT * FROM Exams LIMIT 10;|
|
|
|
|
|
|
\paragraph{Example}
|
|
Below some examples of \sql\ Queries using grouping, aggregations, sorting and grouping
|
|
\inputcodewithfilename{sql}{}{code/sql/aggregations.sql}
|