Advertisement
MattSanders

cohort ret ?

Feb 14th, 2023
781
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 1.58 KB | Source Code | 0 0
  1. WITH base_query AS (
  2.   SELECT
  3.     emp_no,
  4.     start_date,
  5.     end_date,
  6.     DATE_FORMAT(start_date, '%Y') AS cohort, DATEDIFF(end_date, start_date) / 365.25 AS tenure
  7.   FROM dept_emp WHERE start_date BETWEEN '1985-01-01' AND '1995-12-31'
  8. ),
  9. grouped_query AS (
  10.   SELECT
  11.     cohort,
  12.     COUNT(emp_no) AS total_employees,
  13.     SUM(IF(tenure >= 1, 1, 0)) AS year_1,
  14.     SUM(IF(tenure >= 2, 1, 0)) AS year_2,
  15.     SUM(IF(tenure >= 3, 1, 0)) AS year_3,
  16.     SUM(IF(tenure >= 4, 1, 0)) AS year_4,
  17.     SUM(IF(tenure >= 5, 1, 0)) AS year_5,
  18.     SUM(IF(tenure >= 6, 1, 0)) AS year_6,
  19.     SUM(IF(tenure >= 7, 1, 0)) AS year_7,
  20.     SUM(IF(tenure >= 8, 1, 0)) AS year_8,
  21.     SUM(IF(tenure >= 9, 1, 0)) AS year_9,
  22.     SUM(IF(tenure >= 10, 1, 0)) AS year_10
  23.     FROM base_query GROUP BY cohort
  24. )
  25. SELECT
  26.   cohort,
  27.   total_employees, year_1, year_2, year_3, year_4, year_5, year_6, year_7, year_8, year_9, year_10,
  28.   concat((year_1 / total_employees * 100),'%') AS retention_1,
  29.   concat((year_2 / total_employees * 100),'%') AS retention_2,
  30.   concat((year_3 / total_employees * 100),'%') AS retention_3,
  31.   concat((year_4 / total_employees * 100),'%') AS retention_4,
  32.   concat((year_5 / total_employees * 100),'%') AS retention_5,
  33.   concat((year_6 / total_employees * 100),'%') AS retention_6,
  34.   concat((year_7 / total_employees * 100),'%') AS retention_7,
  35.   concat((year_8 / total_employees * 100),'%') AS retention_8,
  36.   concat((year_9 / total_employees * 100),'%') AS retention_9,
  37.   concat((year_10 / total_employees * 100),'%') AS retention_10
  38. FROM
  39.   grouped_query
  40. ORDER BY
  41.   cohort ASC;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement