比较 2 Postgres 布尔值 Rows/Entities

Compare 2 Postgres Boolean Rows/Entities

我正在尝试比较代表不同设置的两行布尔值。

第 1 行是班次所需的设置。 第 2 行是特定候选人工作过的设置。

我想知道求职者没有达到轮班所需的多少技能。 即如果第 1 行等于 true 而第 2 行不等于 true。

基本答案可以是代表以上的单个数字。用于指示计算了哪些列的奖励积分。

产生下面例子Table的SQL是:

SELECT
    c.id as cId, s.id as sId, sm.*
FROM
    aws.settings_matrices AS sm
    LEFT JOIN aws.shifts AS s ON s.settings_matrix_id = sm.id
    LEFT JOIN aws.candidates AS c ON c.settings_matrix_id = sm.id
WHERE
    s.id = '327fff17-3ef6-4589-7459-8deafe5d489a'
    OR c.id = '643dc500-46ah-400b-b456-018bbbee9593'
cid sid id general_ward health_safety nursing_home care_home mental_health learning_disab assisted_living 喘息 急性 palliative_care sensory_impair 儿科 surgical_gen surgical_orth accident_emer 助产 covid_ward icu_itu hdu 进入 长者 泌尿科 created_at modified_at created_by modified_by
327fff17-3ef6-4589-7459-8deafe5d489a 643dc500-46ah-400b-b456-018bbbee9593 f f f f f f f f t t f f f f f f f f f f f f 2021-07-21 14:29:28.484948 2021-07-22 08:34:47.197 默认 示例@example.com
91d7e3dc-fce0-446f-8g7b-9c271cce2592 d044298c-6f28-43d9-892j-8cb22e3ea89c t t t f f t t t 2021-07-16 12:04:47.953 示例@example.com

我不确定您希望使用哪种语言 运行 进行比较和计数,但是由于您只想计算第二行中的 True 值,如果第一行也是 True,你不能只计算两行并显示差异。

逻辑必须是这样的:

如果你不需要硬输入

var requiredThings = ["thing1", "thing2", "etc"];
int missingThins = 0;
foreach (var thing in requiredThings)
  if (thing1[thing] && thing2[thing])
    missingThings++;

如果你必须硬打字,很可能你需要走很长的路,可能

int missingThings = 0;
if (row1.thing1 && row2.thing1) missingThings++;
if (row1.thing2 && row2.thing2) missingThings++;