50/224
\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}