SQL report of subscribers and their associated revenue
I think this looks very good, but I would make a few small changes:


Instead of getting separate columns for month and day, use one column with date_trunc('day', subscriptions.created_at). Then you still have a timestamp that you can format, sort by, etc. Also you will avoid problems when someone reports on a range crossing New Years.
Be aware that binning timestamps into days involves time zones. Right now you're cutting days using UTC, which may be fine, but just be aware of it if you want to do something else.
You don't seem to be using the users table at all, so you could just leave that out completely.
Watch out for your edge conditions. Your query will include all of 1/1 but only the first instant of 3/4. It is more common and probably better to do &gt;= and &lt;. Otherwise if something happens in that first instant it will be double-counted with the next range (e.g. 3/4 to 6/1).