数条件满足
问题描述:
我有一个表(stu_grades),存储学生数据,并在中心他们的成绩,他们参加数条件满足
我想找出例如有多少次该表中每个学生拿到“A”,然后“B”等在任何中心
stu_grades
stu_ID|grade1|grade2|Grade3|center
1 A A C 1
2 B B B 2
3 C C A 1
1 C A C 2
同学生可以用相同的等级,甚至不同等级多次出现在表,相同或不同的中心
我特别要检查这里的档次已经出现超过3次以上,他们在
多少centeres存在,因此最终的输出应该是这样的:
Stu_ID|Grade|Count|centercount
1 A 3 2 (As they accquired 'A' from 2 centres)
1 C 3 2
2 B 3 1 (As they only exist in 1 centre)
3 C 2 1
3 A 1 1
答
select
stu_id,
grade,
sum(count) count,
count(distinct center) centercount
from (
select stu_id, grade, center, count(*)
from stu_grades,
lateral unnest(array[grade1, grade2, grade3]) grade
group by 1, 2, 3
) s
group by 1, 2
order by 1, 2;
+0
作品魅力..谢谢你的 – healthiq
为什么3分不同等级列? – jarlh
@jarlh 3个不同的主题 – healthiq