153/224
\begin{frame}
  \frametitle{Null Values and Aggregations}
  
  \begin{goal}{}
    Usually, \emph{null values are ignored} (filtered out) before
    the aggregation operator is applied.
    \smallskip
    
    \emph{Exception:}
    \begin{itemize}
      \item \sql{count(*)} counts null values 
      \item \sql{count(*)} counts rows, not attribute values
    \end{itemize}
  \end{goal}
  \pause\smallskip
  
  \begin{goal}{}
    If the input set is empty, aggregation functions
    yield \sql{null}.
    \smallskip
    
    \emph{Exception:} \sql{count} returns \sql{0}.
  \end{goal}
  \smallskip
  
  A bit counter-intuitive for \sql{sum} as one might expect \sql{0}.
  \smallskip
  
  However, allows to detect the difference between:
  \begin{itemize}
    \item all column values \sql{null}, or
    \item values that sum up to $0$.
  \end{itemize}  
\end{frame}