I have a table us_customers
that looks like this (with hundreds of thousands of rows):
+----------+----------+
| id | us_state |
+----------+----------+
| 12345678 | MA |
| 23456781 | AL |
| 34567812 | GA |
| 45678123 | FL |
| 56781234 | AZ |
| 67812345 | MA |
| 78123456 | CO |
| 81234567 | FL |
+----------+----------+
… and I want to SELECT a sample of n
customers from each us_state
.
Is there a way to do that cleanly in PostgreSQL 9.3?
I can get one customer from each us_state
easily with:
SELECT DISTINCT ON (us_state) id
FROM us_customers
ORDER BY us_state;
But if I want, say, three customers from each state, is there a way I can do this without running the same query multiple times?