Skip to content

Instantly share code, notes, and snippets.

@alancoleman
Last active August 29, 2015 13:58
Show Gist options
  • Save alancoleman/9973019 to your computer and use it in GitHub Desktop.
Save alancoleman/9973019 to your computer and use it in GitHub Desktop.
This query will figure out how many children will turn 2 years of age if the future birth date is known, it rolls forward in 2 month periods.
SELECT
CASE
-- -- Child turning 2 within 2 month periods
WHEN ue.baby_due_date BETWEEN DATE_SUB(NOW(), INTERVAL 16 MONTH) AND DATE_SUB(NOW(), INTERVAL 14 MONTH) THEN CONCAT(DATE_ADD(CURDATE(), INTERVAL 8 MONTH ), ' to ', DATE_ADD(CURDATE(), INTERVAL 10 MONTH ))
WHEN ue.baby_due_date BETWEEN DATE_SUB(NOW(), INTERVAL 18 MONTH) AND DATE_SUB(NOW(), INTERVAL 16 MONTH) THEN CONCAT(DATE_ADD(CURDATE(), INTERVAL 6 MONTH ), ' to ', DATE_ADD(CURDATE(), INTERVAL 8 MONTH ))
WHEN ue.baby_due_date BETWEEN DATE_SUB(NOW(), INTERVAL 20 MONTH) AND DATE_SUB(NOW(), INTERVAL 18 MONTH) THEN CONCAT(DATE_ADD(CURDATE(), INTERVAL 4 MONTH ), ' to ', DATE_ADD(CURDATE(), INTERVAL 6 MONTH ))
WHEN ue.baby_due_date BETWEEN DATE_SUB(NOW(), INTERVAL 22 MONTH) AND DATE_SUB(NOW(), INTERVAL 20 MONTH) THEN CONCAT(DATE_ADD(CURDATE(), INTERVAL 2 MONTH ), ' to ', DATE_ADD(CURDATE(), INTERVAL 4 MONTH ))
WHEN ue.baby_due_date BETWEEN DATE_SUB(NOW(), INTERVAL 24 MONTH) AND DATE_SUB(NOW(), INTERVAL 22 MONTH) THEN CONCAT(CURDATE(), ' to ', DATE_ADD(CURDATE(), INTERVAL 2 MONTH ))
ELSE 'Out of ranges'
END
AS my_ranges,
COUNT(*) AS baby_count
FROM table AS ue
GROUP BY my_ranges
ORDER BY my_ranges
/*
Will produce something like this
my_ranges baby_count
---------------------------------------
2014-04-04 to 2014-06-04 | 4
---------------------------------------
2014-06-04 to 2014-08-04 | 16
---------------------------------------
2014-08-04 to 2014-10-04 | 13
---------------------------------------
2014-10-04 to 2014-12-04 | 8
---------------------------------------
2014-12-04 to 2015-02-04 | 23
---------------------------------------
Out of range | 43
---------------------------------------
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment