SELECT Agegroup, Attrition, Attrition / (SELECT Count(Attrition) FROM project1.employee) * 100 as Attrition_rate
from (SELECT Agegroup, Count(*) as Attrition
FROM(Select
CASE
WHEN age BETWEEN 0 AND 20 THEN '<20'
WHEN age BETWEEN 20 AND 29 THEN '20-29'
WHEN age BETWEEN 30 AND 39 THEN '30-40'
WHEN age BETWEEN 40 AND 49 THEN '40-50'
WHEN age BETWEEN 50 AND 100 THEN 'Greater than 50'
ELSE 'not specified'
END AS Agegroup
FROM project1.employee
Where Attrition = TRUE) AS T
GROUP BY Agegroup) AS TT
ORDER BY Agegroup;
这将返回零个结果,但当我在BigQuery中使用WITH子句时,它可以正常工作。WITH子句在mySQL工作台中不起作用
mysql和BigQuery都允许with
子句。也许你的数据在这些系统中不同?请提供mySQL版本的详细信息。
请考虑在over
中使用windows函数,而不是嵌套查询。在BiqQuery中测试:
With employee as
(Select 19 age, true Attrition
union all select 20,true
union all select 50,true)
SELECT Agegroup, Attrition, Attrition / sum(Attrition) over ()
from (SELECT Agegroup, Count(*) as Attrition
FROM(Select
CASE
WHEN age BETWEEN 0 AND 20 THEN '<20'
WHEN age BETWEEN 20 AND 29 THEN '20-29'
WHEN age BETWEEN 30 AND 39 THEN '30-40'
WHEN age BETWEEN 40 AND 49 THEN '40-50'
WHEN age BETWEEN 50 AND 100 THEN 'Greater than 50'
ELSE 'not specified'
END AS Agegroup
FROM employee
Where Attrition = TRUE) AS T
GROUP BY Agegroup) AS TT
ORDER BY Agegroup;