\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}