【问题标题】:MySQL Calculating Percentage of MatchesMySQL 计算匹配的百分比
【发布时间】:2012-04-05 03:38:15
【问题描述】:

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

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

我希望在提交工作时能够做的是检查数据库中匹配的候选人,然后根据他们匹配的条件返回一个百分比

目前我的想法是对 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 查询中执行此操作?

【问题讨论】:

  • 您需要显示您的查询。尚不清楚什么是 total_criteria 才能使数学有意义。
  • 抱歉,total_criteria 只是一个整数,它是我匹配的标准总数,在这种情况下为 6

标签: php mysql statistics


【解决方案1】:

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

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 表示真,0 表示假。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-22
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2023-02-09
    相关资源
    最近更新 更多