Sql面试题

行列转换

原始数据为
ids types
1	A
1	C
1	E
2	B
2	D
2	F

希望变为
ids     A       B       C       D       E       F
1	1	0	1	0	1	0
2	0	1	0	1	0	1

行列转换记得用case when then else end

SELECT	
	ids,
	sum(case when types='A' then 1 else 0 end) A,
	sum(case when types='B' then 1 else 0 end) B,
	sum(case when types='C' then 1 else 0 end) C,
	sum(case when types='D' then 1 else 0 end) D,
	sum(case when types='E' then 1 else 0 end) E,
	sum(case when types='F' then 1 else 0 end) F
from interview.rank_changes
GROUP BY ids

 

数据三级分类(从一列数据根据parentid而来)

no     id        name   parentid
1	1	北京市	0
2	2	山东省	0
3	3	昌平区	1
4	4	海淀区	1
5	5	沙河镇	3
6	6	马池口镇	3
7	7	中关村	4
8	8	上地	4
9	9	烟台市	2
10	10	青岛市	2
11	11	某平区	9
12	12	福山区	9
13	13	即墨区	10
14	14	城阳	10

希望变为

rowno  一级分类 二级分类 三级分类
1	北京市	昌平区	沙河镇
2	北京市	昌平区	马池口镇
3	北京市	海淀区	中关村
4	北京市	海淀区	上

你可能感兴趣的:(面试Interview)