前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Power Query分组统计总人数合格人数优秀人数特优人数合计平均最高最低

Power Query分组统计总人数合格人数优秀人数特优人数合计平均最高最低

作者头像
哆哆Excel
发布2022-10-31 15:27:49
8040
发布2022-10-31 15:27:49
举报
文章被收录于专栏:哆哆Excel哆哆Excel

Power Query分组统计总人数合格人数优秀人数特优人数合计平均最高最低

今天的学习代码是有点复杂,可能实际应用中不一定用到,但还是记录一下,也是自己的学习成果吗?

问题与效果看图片吧

【结构流程】

【知识点】

Table.Group

Table.Group( table as table, key as any,aggregatedColumns as list, optional groupKind as nullable number, optionalcomparer as nullable function) as table

解读:

从英文字面来看,这个函数是用来对表进行分组的,即菜单栏里的"分组依据"。

函数语法:Table.Group(表,分组的依据字段,对分组的子对象进行定义,分组的模式,对分组依据字段自定义比较形式)

第一个必填参数:我们很好理解,是从哪个表进行操作。

第二个必填参数:是根据哪列数据进行分组,可以任意格式。参数必须要填写,但是可以是空列表{},只有在不需要值来计算时可以使用。例如_,Table.RowCount等

第三个必填参数:怎么进行分组操作,是一个函数公式。

第四个可选参数:1=全局分组;0=局部分组(分组到下一条不等值为止)

第五个可选参数:目前所知是有2个参数组成的函数(x,y)其中X为每次分组后的第一行;Y为X当前行及下面的每一行。通常用(x,y)=>Number.From()固定格式来处理所判断后的条件值。

第三参数aggregatedColumns书写格式

={{新标题}, each 函数,type 类型}

={{"新标题1",each 函数},{"新标题2", each 函数}}

={{"新标题1", each 函数, type 类型},{"新标题2",each 函数, type 类型}}

={{"求和", each List.Sum([成绩]), type number},{"计数", eachList.Count([学科]), type number}}

【代码】

代码语言:javascript
复制
合格分= 查询条件[条件]{1}*0.6

优秀分= 查询条件[条件]{1}*0.8

特优分= 查询条件[条件]{1}*0.9

 

let

    源 = Table.Group(数据源,{"单位","班别"},{

       {"总人数", each Table.RowCount(_)},

       {"合格人数", each Table.RowCount(Table.SelectRows(_, each {[语文],[数学],[物理],[化学],[总分]}{List.PositionOf(List.Range(Table.ColumnNames(数据源),4,6),查询条件[条件]{0})}>=合格分))},

       {"优秀人数", each Table.RowCount(Table.SelectRows(_, each {[语文],[数学],[物理],[化学],[总分]}{List.PositionOf(List.Range(Table.ColumnNames(数据源),4,6),查询条件[条件]{0})}>=优秀分))},

       {"特优人数", each Table.RowCount(Table.SelectRows(_, each {[语文],[数学],[物理],[化学],[总分]}{List.PositionOf(List.Range(Table.ColumnNames(数据源),4,6),查询条件[条件]{0})}>=特优分))},

       {"合计",each List.Sum({[语文],[数学],[物理],[化学],[总分]}{List.PositionOf(List.Range(Table.ColumnNames(数据源),4,6),查询条件[条件]{0})})},

       {"平均",each Number.Round(List.Average({[语文],[数学],[物理],[化学],[总分]}{List.PositionOf(List.Range(Table.ColumnNames(数据源),4,6),查询条件[条件]{0})}),2)},

       {"最高",each List.Max({[语文],[数学],[物理],[化学],[总分]}{List.PositionOf(List.Range(Table.ColumnNames(数据源),4,6),查询条件[条件]{0})})},

       {"最低",each List.Min({[语文],[数学],[物理],[化学],[总分]}{List.PositionOf(List.Range(Table.ColumnNames(数据源),4,6),查询条件[条件]{0})})}

}

)

in

源
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 哆哆Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档