上篇文章尝试用with递归解决了数组拆分为多行的问题。今天再次尝试使用json_函数解决。昨天预留的作业放在本文第二部分进行实现。
一、json函数
1、准备json数据
由于原表没有json格式的列,先构造json格式的电影类型字段,如下:
2、验证json数据
json_valid()、json_length()
3、数组拆分
前述将字段加工为json格式后,用json函数json_table(),也是非同凡响呀,更简洁,如下:
二、作业解答
昨天预留了4道题目,按此前的sql方法都能解决,现也结合今日的json函数来实现一回,加深理解。应某些朋友的反馈,只显示了影视的id字段mid而没有把影视的名称显示出来,今天满足这些朋友的需求。
1、作业题1
如下实现,用的left_join,其实用innerjoin也一样,因为都是对同一份数据进行groupbyyear得到的2个中间表,年份列自然是相同的。更严谨地,应该用日期维表再对总体结果进行leftjoin下,保证每年都有的完整性,不缺失数据。去翻翻此前的日期维表相关文章。
2、作业题2
真得有19位演员有过多部高分影视作品(这只是部分数据),厉害了。
3、作业题3
对比分析不好做,需要先列出各类对比指标,tk实际工作中还挺头疼的。本题简要处理,用平均评分、平均评分人数作为对比指标。按现在的样本数据看,联合导演的这么强吗。
4、作业题4
再次复习json_table()的用法,引入了快照概念的维度表(后续数据仓库专栏文章会有介绍,敬请