In this chapter, you learned about the advanced features provided by SQL. On top of simple aggregates PostgreSQL provides ordered sets, grouping sets, windowing functions, recursions, as well as an interface to create custom aggregates. The advantage of running aggregations in the database is that code is easy to write and a database engine will usually have an edge when it comes to efficiency.
In the next chapter, we will turn our attention to more administrative tasks such as handling log files, understanding system statistics, and implementing monitoring.