0

我有两个“技能”表,第一个包含员工的技能,第二个表包含公司的“技能”。

表员工技能

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");

预期结果应与某些技能相匹配,并返回类似于以下内容的百分比:

技能 | 匹配

  • 窗户 | 25%
  • linux | ...%
  • 麦克 | ...%
4

1 回答 1

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

于 2013-06-14T07:51:20.373 回答