CASE WHEN THEN ELSE END, MAX


case when then else endの使用
簡単に言えば.
case -> {
when -> if
else -> else
end -> }
select * from (
	select AA.a, b, c from (
	select 
	case 			     // {
		when b = 'aaaaa' then 'a'  //if( b = 'aaaaa') return a
		when b = 'bbbbb' then 'b' //if( b = 'bbbbb') return b
		else 'c'  		//else
	END as b, 			 //}
	d
	from temp where (d, b) IN (SELECT DISTINCT MAX(b) over (partition by c) as c, b
	FROM temp)
	) AA left outer join temp1 BB on AA.d = BB.d
) a where e = 'b'
max over partition by
グループbyのようにグループ化できます.
MAXを使用する場合は、Selectの値をすべてgroupbyに入れる必要があります.
partition by対応するパケットでCountまたはMaxを使用
SELECT DISTINCT MAX(b) over (partition by c) as c, b
FROM temp