我有两个有'技能'的表,第一个包含员工的技能,第二个表包含公司的'技能'。
表格员工技能
CREATE TABLE `employee_skills` (
`e_id` int(8) NOT NULL,
`skill` int(8) NOT NULL,
`points` enum('0','25','50','75','100') COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`u_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
表公司技能
CREATE TABLE `company_skills` (
`c_id` int(8) NOT NULL,
`skill` int(8) NOT NULL,
`points` enum('0','25','50','75','100') COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`u_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
因此,如果公司的技能Windows为100分,员工为25分,则匹配百分比为25%。我正在使用以下查询来获得结果:
$result = $connection->prepare("select u_id, skill, points, COUNT(points) from employee_skills");
预期结果应与某些技能相匹配,并返回类似于以下的百分比:
技能|匹配答案 0 :(得分:1)
尝试以下:
SELECT e_id, e.skill, c.skill, (e.points/c.points)*100 from employee_skills as e, company_skills as c
WHERE e.skill = c.skill
GROUP BY e.e_id,e.skill
见下文:
SELECT c.skill, total_emp_points, c.points as total,
(total_emp_points/c.points)*100 as percnt FROM company_skills AS c,
(SELECT e.skill, SUM(e.points) as total_emp_points
FROM employee_skills as e
GROUP BY e.skill) as emp
WHERE c.skill = emp.skill;
参见 SqlFiddle