I’ve been keeping an inventory of my personal library in a database for more than a decade. It was thus easy, when writing the previous post, to find out the exact number of books I had bought from SFBC. I used the following SQL query:
SELECT EXTRACT(YEAR FROM purchase_date), COUNT(DISTNCT title) FROM inventory WHERE purchased_from = 'SFBC' GROUP BY EXTRACT(YEAR FROM purchase_date)
The results looked like this:
date_part | count -----------+------- 2001 | 1 2002 | 11 2003 | 24 2004 | 18 2005 | 24 2006 | 8 2007 | 10 2008 | 6 2009 | 4 2010 | 5 2011 | 5 2012 | 9 2013 | 3 | 106 (14 rows)
I might ordinarily have used an ORDER BY
clause to force the results into a useful order, but in this case the query planner decided to implement the GROUP BY
using a sort so I didn’t need to. The last row in the results shows all the books I bought before I started the inventory database in 2001; it corresponds to books whose purchase_date
is NULL
because I didn’t have any record of when they were purchased.