面试题:
成绩表转成结果表:
将成绩表列合并,同组放到一个map中,然后通过map将数据取出并将列名转换。
SELECT id, sub['数学'] AS `数学`, sub['语文'] AS `语文` FROM (SELECT id, str_to_map(concat_ws(",",collect_set(concat_ws(':', subject, score)))) sub, concat_ws(",",collect_set(concat_ws(':', subject, score))) FROM tmp.tmp_test_1010 GROUP BY id)t1 |
原始表:
结果表:
仅供参考,如有更好的方法互相学习。
:::总结::::人生很短,不断学习