我正在处理招聘数据,并希望产生的输出,将让我知道,如果一个工作是'内部唯一'(这意味着它只是张贴到一个内部工作委员会,而不是任何外部工作委员会)。我所期望的输出是每个作业一行,其中只有一列显示true或false。
我有一个表,它提供了带有作业id和作业板名称的行,以及一个表示作业是否发布到该站点的“live”列。
我在以下位置创建了一个数据集:https://rextester.com/fhu87800
CREATE TABLE job_posts(
ID INT NOT NULL
, job_id INTEGER NOT NULL
, job_board_name VARCHAR(50) NOT NULL
, live BOOLEAN);
INSERT INTO job_posts(id,job_id,job_board_name,live) VALUES (1,20035,'internal',TRUE);
INSERT INTO job_posts(id,job_id,job_board_name,live) VALUES (2,20035,'company_external_1',TRUE);
INSERT INTO job_posts(id,job_id,job_board_name,live) VALUES (3,20035,'company_external_2',TRUE);
INSERT INTO job_posts(id,job_id,job_board_name,live) VALUES (4,20036,'internal',TRUE);
INSERT INTO job_posts(id,job_id,job_board_name,live) VALUES (5,20036,'company_external_1',FALSE);
INSERT INTO job_posts(id,job_id,job_board_name,live) VALUES (6,20036,'company_external_2',FALSE);
INSERT INTO job_posts(id,job_id,job_board_name,live) VALUES (7,20036,'company_external_3',FALSE);
INSERT INTO job_posts(id,job_id,job_board_name,live) VALUES (8,20037,'internal',TRUE);
INSERT INTO job_posts(id,job_id,job_board_name,live) VALUES (9,20037,'company_external_1',FALSE);
INSERT INTO job_posts(id,job_id,job_board_name,live) VALUES (5,20036,'company_external_2',TRUE);
SELECT *
FROM job_posts
ORDER BY 1
我想要的输出将显示job\u id 20037为internal\u only=true,其他job为false。
提前感谢您的帮助!
4条答案
按热度按时间7gyucuyw1#
使用
filter
带的子句bool_or()
要实现这一点:5us2dqdw2#
可以使用反连接来查找所需的行。例如:
结果:
参见db fiddle的运行示例。
h9vpoimq3#
您可以选择活动的内部作业,然后使用“不存在”来消除也具有外部过帐的内部过帐。
46qrfjad4#
你必须写一个案例查询。