如何解决比较 2 个 Postgres 布尔行/实体
我正在尝试比较代表不同设置的两行布尔值。
第 1 行是轮班所需的设置。 第 2 行是特定候选人工作过的设置。
我想知道有多少候选人没有满足轮班所需的技能。 即如果第 1 行等于 true 且第 2 行不等于 true。
基本答案可以是代表上述内容的单个数字。指示计入哪些列的奖励积分。
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 | 健康安全 | nursing_home | care_home | 心理健康 | learning_disab | 辅助生活 | 休息 | 急性 | 姑息治疗 | sensory_impair | 儿科 | surgical_gen | surgical_orth | accident_emer | 助产士 | covid_ward | icu_itu | hdu | ent | 老人 | 泌尿科 | created_at | modified_at | created_by | modified_by |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
NULL | 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@example.com |
91d7e3dc-fce0-446f-8g7b-9c271cce2592 | NULL | d044298c-6f28-43d9-892j-8cb22e3ea89c | t | t | t | NULL | f | f | t | t | t | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 2021-07-16 12:04:47.953 | NULL | example@example.com | NULL |
解决方法
我不确定您想用哪种语言运行比较和计数,但由于您只想计算第二行中的 True
值,如果第一行中的相应值也是 {{ 1}},您不能只计算两行并显示差异。
逻辑应该是这样的:
如果你不需要硬打字
True
如果你必须硬打字,很遗憾,你可能需要走很长的路
var requiredThings = ["thing1","thing2","etc"];
int missingThins = 0;
foreach (var thing in requiredThings)
if (thing1[thing] && thing2[thing])
missingThings++;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。