Window Functions
Aggregate functions allow us to take many rows and convert those rows into one number. For example, the COUNT
function takes in the rows of a table and returns the number of rows there are. However, we sometimes want to be able to calculate multiple rows but still keep all the rows following the calculation. For example, let's say you wanted to rank every user in order according to the time they became a customer, with the earliest customer being ranked 1, the second-earliest customer being ranked 2, and so on. You can get all the customers using the following query:
SELECT * FROM customers ORDER BY date_added;
You can order customers from the earliest to the most recent, but you can't assign them a number. You can use an aggregate function to get the dates and order them that way:
SELECT date_added, COUNT(*) FROM customers GROUP BY date_added ORDER BY date_added
The following is the output of the preceding code: