问题描述
对于特定的 project_name(成功、失败、中止、不稳定),我每天有多个结果的表。我只想选择只发生 FAILURE 状态的日子 - 没有别的。有些日子有多个状态(失败后可以解决并获得不同时间的状态并设置为成功)。 如何仅选择处于 FAILURE 状态的天数?
我的查询:
SELECT
date_trunc('day',time) AS group_day,build_result,project_name
FROM project_status
WHERE project_name = 'project_x'
GROUP BY date_trunc('day',time),project_name,build_result
解决方法
使用聚合和具有:
SELECT date_trunc('day',time) AS group_day,project_name
FROM project_status
WHERE project_name = 'project_x'
GROUP BY date_trunc('day',time),project_name
HAVING MIN(build_result) = MAX(build_result) AND
MIN(build_result) = 'FAILURE'
,
您可以按group_day
和project_name
分组,并在string_agg()
子句中使用HAVING
来设置条件build_result
的唯一值是{{ 1}}:
'FAILURE'