您能帮我按组查询吗? 我有一个像下面的桌子
Country State SomeType
UK England Yes
UK Wales No
UK Scotland MayBe
Germany Bavaria Yes
Germany Bremen Yes
我需要将每个国家/地区标记为是,否,可能是或混合类型。
如果所有州均为“是”,则该国家将为“是”,如果所有“否”,则该国家将为“否”,如果所有州均为“可能是”,则该国家将为“可能是” 但是,如果不同州的SomeType不同,则应将其标记为“混合”
在上述情况下,我应该将输出显示为
Country Type
UK Mixed
Germany Yes
这只是一个虚构的示例,因为我在这里不能给出真正的要求。很抱歉,如果有人反对称威尔士为州而不是州。
答案 0 :(得分:1)
您可以将数组聚合与<mat-form-field>
<mat-select (selectionChange)="changeMySelection($event)" [value]="myList">
// your options ....
</mat-select>
</mat-form-field>
一起使用,然后使用array_agg()
运算符检查数组值:
ALL
答案 1 :(得分:1)
您可以进行聚合:
select country, (case when count(distinct sometype) > 1
then 'mixed'
else max(sometype)
end) as Type
from table t
group by country;
答案 2 :(得分:0)
您可以使用聚合和条件表达式:
select
country,
case
when count(*) filter(where sometype = 'No') = 0 then 'Yes'
when count(*) filter(where sometype = 'Yes') = 0 then 'No'
else 'Mixed'
end "type"
from mytable
group by country
答案 3 :(得分:0)
您可以将case..when
表达式与聚合一起使用:
select country,
case when sum(case when sometype = 'Yes' then 1 end)=count(*) then max(sometype)
when sum(case when sometype = 'No' then 1 end)=count(*) then max(sometype)
when sum(case when sometype = 'MayBe' then 1 end)=count(*) then max(sometype)
else
'Mixed'
end as type
from tab
group by country