138/224
\begin{frame}
  \frametitle{Aggregations}

  \begin{block}{}
    SQL-92 defines the five main aggregation functions
    \begin{tcenter}
      \sql{count}, \sql{sum}, \sql{avg}, \sql{max}, \sql{min}
    \end{tcenter}
  \end{block}

  Some DBMS define more functions:
  \begin{tcenter}
    \sql{correlation}, \sql{stddev}, \sql{variance}, \dots 
  \end{tcenter}
  \pause\medskip

  \countStudents
  \pause
  
  \begin{goal}{}
    Some aggregation functions are sensitive to \emph{duplicates}:
    \begin{tcenter}
      \sql{sum}, \sql{count}, \sql{avg}\;,
    \end{tcenter}
    some are insensitive:
    \begin{tcenter}
      \sql{min}, \sql{max}
    \end{tcenter}
  \end{goal}
  SQL allows to explicitly request to ignore duplicates, e.g.:
    \begin{tcenter}
      $\cdots$ \sql{count(distinct A)} $\cdots$
    \end{tcenter}

    %   \item Any \emph{commutative} and \emph{associative} binary
    %     operator with a neutral element can be extended (``\emph{lifted}'')
    %     to work on set-valued arguments (\emph{e.g.}, \sql{sum} corresponds
    %     to \sql{+}).
    %   \end{itemize}
    %
    %   \begin{quiz}{\textwidth}{Commutative and associative, neutral element?}
    %     Why do we require these properties of the operators?
    %   \end{quiz}
\end{frame}