0

「スキル」を含む 2 つのテーブルがあり、最初のテーブルには従業員のスキルが含まれ、2 番目のテーブルには会社の「スキル」が含まれます。

テーブル従業員のスキル

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 | 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 に答える