Our queries are getting fairly complex, but we have nearly introduced all the important parts of a
SELECT
query. One thing that you might have noticed is that if the GROUP BY
clause is executed
after the WHERE
clause (which filters the rows which are to be grouped), then how exactly do we
filter the grouped rows?
Luckily, SQL allows us to do this by adding an additional HAVING
clause which is used specifically
with the GROUP BY
clause to allow us to filter grouped rows from the result set.
SELECT group_by_column, AGG_FUNC(column_expression) AS aggregate_result_alias, …
FROM mytable
WHERE condition
GROUP BY column
HAVING group_condition;
The HAVING
clause constraints are written the same way as the WHERE
clause constraints, and are
applied to the grouped rows. With our examples, this might not seem like a particularly useful
construct, but if you imagine data with millions of rows with different properties, being able to apply
additional constraints is often necessary to quickly make sense of the data.
If you aren't using the `GROUP BY` clause, a simple `WHERE` clause will suffice.
For this exercise, you are going to dive deeper into Employee data at the film studio. Think about the different clauses you want to apply for each task.