Summary
In this chapter, we learned that SQL aggregate functions provide an efficient, flexible way to calculate summary values in SQL query result sets. We discovered that the GROUP BY
clause will separate the results of a SELECT
query into one or more row groups to support the design and execution of queries with aggregate functions. We saw that the HAVING
clause provides a pinpoint way to filter aggregate function calculations. Although they're similar, we learned about the differences between WHERE
and HAVING
clauses. Finally, we saw that when we use OVER
and PARTITION BY
in creative ways, MySQL will efficiently expand the range of problems it can solve for us. We can also order the items with a group using the RANK
and DENSE RANK
functions. In the next chapter, we will look at some advanced features of SQL programming.