\begin{frame}
\frametitle{Group By}
\begin{goal}{}
The groups are formed \emph{after} the evaluation of the \sql{from} and \sql{where} clauses.
Aggregation is subsequently done for every group (yielding as many rows as groups).
\end{goal}
\begin{goal}{}
The \sql{group by} \emph{never} produces empty groups.
\end{goal}
\begin{goal}{}
The \sql{group by} attributes may be used in the \sql{select} clause
since they have a \emph{unique value for every group}.
\begin{itemize}
\item A reference to any other attribute is illegal.
\end{itemize}
\end{goal}
\begin{code}{0.95\textwidth}{Wrong!}
{\footnotesize
\BUseVerbatim{query}}
\end{code}
\remark{%
Wrong, although \sql{E.number} functionally determines \sql{E.topic} which thus is unique (for every group).
}
\end{frame}