毕业设计代写网站wordpress 工单插件
毕业设计代写网站,wordpress 工单插件,网站开发技术分享ppt,网站开发h5页面文章目录 应用需求场景记录过程1. 准备数据2. 给数据根据姓名分组#xff0c;加上序号.3. 根据name分组成map结构4. 拆分map 应用需求场景
准备的数据是这样的#xff1a;
需要将每个人的成绩显示在一行上#xff0c;需要的结果如下#xff0c;但是我的情况是课程有非常… 文章目录 应用需求场景记录过程1. 准备数据2. 给数据根据姓名分组加上序号.3. 根据name分组成map结构4. 拆分map 应用需求场景
准备的数据是这样的
需要将每个人的成绩显示在一行上需要的结果如下但是我的情况是课程有非常多但不是每个课程都存在。我只想把这个人学习的3个课程列出来所以这类有个问题就是每个同学的课程不一定是语文、数学、英语但是最大不多于3门课。 最终的结果如下 记录过程
1. 准备数据
with tmp_a as (select a name,语文 clazz, 80 as scoreunion allselect a name,高数 clazz, 85 as scoreunion allselect a name,英语 clazz, 20 as scoreunion allselect b name,微积分 clazz, 70 as scoreunion allselect b name,数学 clazz, 75 as scoreunion allselect b name,现代 clazz, 71 as scoreunion allselect c name,物理 clazz, 70 as scoreunion allselect c name,音乐 clazz, 75 as scoreunion allselect c name,体育 clazz, 71 as score
)
select * from tmp_a;2. 给数据根据姓名分组加上序号.
with tmp_a as (select a name,语文 clazz, 80 as scoreunion allselect a name,高数 clazz, 85 as scoreunion allselect a name,英语 clazz, 20 as scoreunion allselect b name,微积分 clazz, 70 as scoreunion allselect b name,数学 clazz, 75 as scoreunion allselect b name,现代 clazz, 71 as scoreunion allselect c name,物理 clazz, 70 as scoreunion allselect c name,音乐 clazz, 75 as scoreunion allselect c name,体育 clazz, 71 as score
)
select *,row_number() over(partition by name order by clazz) rk
from tmp_a;3. 根据name分组成map结构
注意这里用到的map_agg是doris里面的其他数据库不确定有没有。 map_agg(key,value) 这样使用的这里将序号作为key后面方便统一取值。
with tmp_a as (select a name,语文 clazz, 80 as scoreunion allselect a name,高数 clazz, 85 as scoreunion allselect a name,英语 clazz, 20 as scoreunion allselect b name,微积分 clazz, 70 as scoreunion allselect b name,数学 clazz, 75 as scoreunion allselect b name,现代 clazz, 71 as scoreunion allselect c name,物理 clazz, 70 as scoreunion allselect c name,音乐 clazz, 75 as scoreunion allselect c name,体育 clazz, 71 as score
),
tmp_b as (
select *,row_number() over(partition by name order by clazz) rk
from tmp_a
)
select name,
map_agg(rk,clazz) clazz,
map_agg(rk,score) score
from tmp_b group by name;4. 拆分map
这里必须写死没其他好方法,而且列是固定写死的。 clazz[1] 这里的1就是上面的放进去的rk的值由于我们每个人最多只有3门课 所以可以就取 clazz[1] clazz[2] clazz[3]
with tmp_a as (select a name,语文 clazz, 80 as scoreunion allselect a name,高数 clazz, 85 as scoreunion allselect a name,英语 clazz, 20 as scoreunion allselect b name,微积分 clazz, 70 as scoreunion allselect b name,数学 clazz, 75 as scoreunion allselect b name,现代 clazz, 71 as scoreunion allselect c name,物理 clazz, 70 as scoreunion allselect c name,音乐 clazz, 75 as scoreunion allselect c name,体育 clazz, 71 as score
),
tmp_b as (
select *,row_number() over(partition by name order by clazz) rk
from tmp_a
),
tmp_c as (
select name,
map_agg(rk,clazz) clazz,
map_agg(rk,score) score
from tmp_b group by name
)
select name,
clazz[1] clazz_1,score[1] score_1,
clazz[2] clazz_2,score[2] score_2,
clazz[3] clazz_3,score[3] score_3
from tmp_c最终显示如下中午没睡觉想了一个中午脑壳痛看起来好像也不太复杂 如果每个人的课程增加时只需要在最后添加一行即可。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87024.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!