MySQL计算匹配百分比

时间:2012-03-20 16:20:11

标签: php mysql statistics

我正在使用PHP和MySQL创建招聘网站,我希望能够在提交工作时将候选人与工作匹配

当客户提交工作时,他们可以选择工作适用的部门,是否需要驾驶执照,候选人是否必须是SIA(安全行业管理局)注册的,以及哪个SIA级别和其他几个标准< / p>

我希望在提交作业时能够做的是检查数据库中是否有匹配的候选人,然后根据他们匹配的标准返回百分比

目前我的想法是为x条件制作x数据库查询,然后计算百分比,例如:

public function getJobCriteriaPercentage($job_id, $candidate_id) {
    $sector_query = $this->db->query(...);
    $driving_licence_query = $this->db->query(...);
    $sia_query = $this->db->query;
    ...
    $matches = 0;
    if($sector_query->num_rows) {
        $matches++;
    }
    ...
    $percent = ($matches / TOTAL_CRITERIA) * 100;
}

是否有更有效的方法可以在一个MySQL查询中执行此操作?

1 个答案:

答案 0 :(得分:3)

根据每个条件运行查询将终止您的服务器。为什么不返回总匹配的列?

EG:如果你的过滤器是:

  • ColA = 'valA'
  • ColB in (1, 5, 7)
  • ColC like '%valC%'

你可以做一些想法:

select
    (ColA = 'valA') + 
    (ColB in (1, 5, 7)) + 
    (ColC like '%valC%') TotalMatches
from t
where jobId = $jobId and candidateId = $candidateID

如果您想知道具体的匹配项,可以将其拆分为列:

select
    ColA = 'valA' ColAFilter,
    ColB in (1, 5, 7) ColBFilter,
    ColC like '%valC%' ColCFilter
from t
where jobId = $jobId and candidateId = $candidateID

比较返回1表示true,0表示false。