我正在尝试在结果表上运行SQL查询,如下所示:
name | property | col1 | col2
___________________________________________
abc | temp.a | 1 | 0
abc | temp.b | 1 | 0
abc | perm.a | 1 | 1
abc | date | 0 | 0
abc | perm.b | 1 | 0
我想对所有相似的行进行分组,并将col1和col2计为1而不是取总和,这看起来应该是这样的:
name | propertyname | count_col1 | count_col2
___________________________________________________________
abc | temp.% | 1 | 0
abc | perm.% | 1 | 1
abc | date | 0 | 0
我尝试了一些SQL查询,但它不起作用。我尝试使用公用表表达式(比如'with'关键字),但是有更好的方法来编写SQL吗?
答案 0 :(得分:0)
SELECT name, split_part(property, '.', 1) AS propertyname
, bool_or(col1) AS col1
, bool_or(col2) AS col2
FROM tbl
GROUP BY 1, 2;
假设col1
和col2
是boolean
(这里看起来最好)。如果您使用integer
:
CASE WHEN sum(col1) > 0 THEN 1 ELSE 0 END AS col1
split_part()
在第一个点之前获取字符串的一部分,实现与您的示例相同。例如: