In this chapter, we learned about the incredible power of aggregate functions. We learned about several of the most common aggregate functions and how to use them. We then used the
GROUP BY clause and saw how it can be used to divide datasets into groups and calculate summary statistics for each group. We then learned how to use the
HAVING clause to further filter a query. Finally, we used aggregate functions to help us clean data and analyze data quality.
In the next chapter, we will learn about a close cousin of aggregate functions, window functions, and see how they can be utilized to understand data.