\begin{frame} \frametitle{Duplicate Elimination} \vspace{-1ex} \begin{goal}{} A core difference between SQL and relational algebra is that \emph{duplicates have to explicitly eliminated} in SQL. \end{goal} \begin{exampleblock}{} Which Exercises have been solved by at least one student? \medskip \begin{minipage}{.59\textwidth} \begin{center} \begin{code}{0.95\textwidth}{} \BUseVerbatim{query} \end{code} \end{center} \end{minipage}~ \begin{minipage}{.39\textwidth} \begin{tcenter} {\tableSqeeze\colorbox{rellight}{% \begin{tabular}[t]{|c|c|} \hd{category} & \hd{number} \\ \hline exam & 1 \\ exam & 1 \\ exam & 1 \\ \vdots & \vdots \\ \hline \end{tabular}% }}% \end{tcenter} \end{minipage} \end{exampleblock} \pause \begin{goal}{} The \emph{\sql{distinct}} modifier may be applied to the \sql{select} clause to request explicit duplicate row elimination \end{goal} \begin{exampleblock}{} \begin{minipage}{.59\textwidth} \begin{center} \begin{code}{0.95\textwidth}{} \BUseVerbatim{query2} \end{code} \end{center} \end{minipage}~ \begin{minipage}{.39\textwidth} \begin{tcenter} {\tableSqeeze\colorbox{rellight}{% \begin{tabular}[t]{|r|r|} \hd{category} & \hd{number} \\ \hline exam & 1 \\ homework & 1 \\ homework & 2 \\ \hline \end{tabular}% }}% \end{tcenter} \end{minipage} \end{exampleblock} \pause \begin{alertblock}{} Unexpected duplicates in the result can be a sign of mistakes! \end{alertblock} \bigskip \end{frame}