Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save alancoleman/10833944 to your computer and use it in GitHub Desktop.
Save alancoleman/10833944 to your computer and use it in GitHub Desktop.
Sort rows into age ranges using date of birth
SELECT
(CASE
WHEN u.dob BETWEEN DATE_SUB(CURDATE(),INTERVAL 80 YEAR) AND DATE_SUB(CURDATE(),INTERVAL 75 YEAR) THEN '80-75'
WHEN u.dob BETWEEN DATE_SUB(CURDATE(),INTERVAL 75 YEAR) AND DATE_SUB(CURDATE(),INTERVAL 70 YEAR) THEN '75-70'
WHEN u.dob BETWEEN DATE_SUB(CURDATE(),INTERVAL 70 YEAR) AND DATE_SUB(CURDATE(),INTERVAL 65 YEAR) THEN '70-65'
WHEN u.dob BETWEEN DATE_SUB(CURDATE(),INTERVAL 65 YEAR) AND DATE_SUB(CURDATE(),INTERVAL 60 YEAR) THEN '65-60'
WHEN u.dob BETWEEN DATE_SUB(CURDATE(),INTERVAL 60 YEAR) AND DATE_SUB(CURDATE(),INTERVAL 55 YEAR) THEN '60-55'
WHEN u.dob BETWEEN DATE_SUB(CURDATE(),INTERVAL 55 YEAR) AND DATE_SUB(CURDATE(),INTERVAL 50 YEAR) THEN '55-50'
WHEN u.dob < DATE_SUB(CURDATE(),INTERVAL 80 YEAR) THEN '80+'
ELSE 'other'
END) AS age,
COUNT(*) AS users
FROM Users AS u
GROUP BY age
ORDER BY age
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment