比较 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++;
我正在尝试比较代表不同设置的两行布尔值。
第 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++;