\subsection{Operations}
\begin{tables}{ll}{Keyword                    & Description}
              \texttt{SELECT val, val2}       & returns the columns \texttt{val} and \texttt{val2}                      \\
              \texttt{FROM table d, table2 c} & selects the target tables. Can use range variables (\texttt{d, c} here) \\
              \texttt{WHERE}                  & Filter results. Can also target non-acquired columns                    \\
              \texttt{DISTINCT}               & Returns elements without duplicates                                     \\
              \texttt{IN}                     & Checks if the element is present in subquery                            \\
              \texttt{UNION}                  & Set union (also removes duplicates)                                     \\
              \texttt{INTERSECT}              & Set intersection                                                        \\
              \texttt{EXCEPT}                 & Set difference                                                          \\
              \texttt{JOIN}                   & Join tables, always requires a ON clause                                \\
              \texttt{ON}                     & Specify on which column with what condition to join the tables          \\
              \texttt{DATE}                   & Used to do comparisons against fixed Dates (followed by Datestring)     \\
              \texttt{AS}                     & Rename a column                                                         \\
              \texttt{AVG(column)}            & Computes the average of the specified column                            \\
              \texttt{SUM(column)}            & Computes the sum of the specified column                                \\
\end{tables}

We can directly add new columns to our result using statements like (also note that we do not actually return salary and employment columns)
\mint{sql}{SELECT name, salary * employment / 100 AS RealSalary FROM employees;}

When applying \texttt{GROUP BY}, COUNT and the like operate on each group, not entire dataset.

\texttt{NATURAL JOIN} doesn't require a ON clause (it looks for columns with same name)

After \texttt{GROUP BY} we can't use \texttt{WHERE}, instead we can use \texttt{HAVING}, which operates on groups instead of on rows.

We can compare against a query with a single result column and row using a \texttt{WHERE} clause.

The \texttt{CROSS JOIN} is the both-sided extension to \texttt{LEFT JOIN} and \texttt{RIGHT JOIN}

We can compute the number of all passed grades for a person using something like
\mint{sql}+SUM(CASE Grade >= 1 THEN 1 ELSE 0 END) AS PassedSubjectsCount+
