我有一张桌子,大概如下所示
level1 | level2 | level3 | key |
---|---|---|---|
A | B | C | k1 |
A | B | C | K2 |
A | B | D | k2 |
A | B | E | k3 |
A | F | G | k4 |
A | F | null | k5 |
A | null | null | k6 |
A | B | null | k7 |
A | B | null | k8 |
我希望将层次 struct 信息传递给下边的子数
A-->1
A-->B -->2+1(a)=3
A-->B--->C-->1+2+2( 2 entries for ABC)=5
A--B-->D-->1+2+1=4
A--B-->E-->1-->1+2+1=4
A--F-->1+1=2
A--F-->G-->1+1+1=3
我try 了下面的查询,但没有给出正确的结果
select CONCAT(ifnull(level1, ''), ' > ', ifnull(level2, ''), ' > ', ifnull(level3, '')) as 'foo',COUNT(*) as 'count' from table t t.level1, t.level2, t.level3;
如何应用聚合函数并获取正确的结果.