我做了一些调查,但找不到一个类似我的问题.
我想建立一个函数来计算受过特定教育的人的百分比。例如,除了所有可能的教育(在我的表),有多少是飞行员,多少是工程师,等等。
我有两个表:表Users
有一个表Education
的外键。目标是返回一个表格,其中您已经说明了所有可能的教育和与之相关的人的百分比。
我拿到的号码是
SELECT Educations.education, COUNT(Users.idEducation) AS numberOfEducations
FROM Educations
LEFT JOIN Users ON (Educations.idEducation= Users.idEducation)
GROUP BY Educations.education;
以及所有可能的教育的数量
SELECT COUNT(idEducation) AS allTypes FROM Educations;
现在,我需要做的和所有方面都失败的是,计算每个教育百分比,并以以下形式输出:
| Education | Percentage |
| Pilot | 5% |
| Engineer | 10% |
| Sales | 25% |
| Banker | 8% |
发布于 2017-09-10 11:28:05
可以在大多数数据库中使用ANSI标准窗口函数:
SELECT e.education, COUNT(u.idEducation) AS numberOfEducations,
COUNT(u.idEducation)*1.0 / SUM(COUNT(u.idEducation)) OVER () as ratio
FROM Educations e LEFT JOIN
Users u
ON e.idEducation = u.idEducation)
GROUP BY e.education;
* 1.0
是因为一些数据库进行整数除法--即1/2是0而不是0.5。
https://stackoverflow.com/questions/46140193
复制相似问题