两级分层如何分两层聚合,再行转列

炎同学要努力 2023-06-16 10:35:19

如何分两层聚合,再行转列
;with t1 as
(
select id = '00' ,班组id = 'A1',人员id = 'A',证书 = 'A'union all
select id = '00' ,班组id = 'A1',人员id = '班长',证书 = '班长证'union all
select id = '00' ,班组id = 'A1',人员id = 'C',证书 = 'A'union all
select id = '00' ,班组id = 'A2',人员id = 'A',证书 = 'A'union all
select id = '00' ,班组id = 'A3',人员id = '班长',证书 = '班长证书'union all
select id = '00' ,班组id = 'A4',人员id = '副班长',证书 = '证书'union all
select id = '00' ,班组id = 'A5',人员id = 'A',证书 = 'A'

)

目标:

id             班组数量       班组名       有班长     班长有证书

00               5                   A1              yes           yes

00               5                   A2                          

00               5                   A3              yes           yes

00               5                   A4                          

00               5                   A5                         

...全文
132 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
幸福感奇差 2023-06-16
  • 打赏
  • 举报
回复

用一个窗口函数做统计即可

with t1 as
(
select id = '00' ,班组id = 'A1',人员id = 'A',证书 = 'A'union all
select id = '00' ,班组id = 'A1',人员id = '班长',证书 = '班长证'union all
select id = '00' ,班组id = 'A1',人员id = 'C',证书 = 'A'union all
select id = '00' ,班组id = 'A2',人员id = 'A',证书 = 'A'union all
select id = '00' ,班组id = 'A3',人员id = '班长',证书 = '班长证书'union all
select id = '00' ,班组id = 'A4',人员id = '副班长',证书 = '证书'union all
select id = '00' ,班组id = 'A5',人员id = 'A',证书 = 'A'

)
select id, sum(count(distinct 班组id)) over(partition by id) 班组数量, 班组id,
    case when sum(count(case when员id = '班长' then 1 else null end)) over(partition by id, 班组id) > 0 
            then 'yes'
    else null end 有班长,
    case when sum(count(case when员id = '班长' and 证书 like '班长证%' then 1 else null end)) over(partition by id, 班组id) > 0 
            then 'yes'
    else null end 班长有证书
from t1
group by id, 班组id
炎同学要努力 2023-06-16
  • 举报
回复
@幸福感奇差 你太厉害了,我使用分步做法,做不出来。
炎同学要努力 2023-06-16
  • 举报
回复
@幸福感奇差 只会,根据id分组 得到 班组数量 然后再弄个表,根据id,班组id分组得到另一个表,但是连接起来又有问题了
炎同学要努力 2023-06-16
  • 举报
回复
@幸福感奇差 with t1 as ( select id = '00' ,班组id = 'A1',人员id = 'A',证书 = 'A'union all select id = '00' ,班组id = 'A1',人员id = '班长',证书 = '班长证'union all select id = '00' ,班组id = 'A1',人员id = 'C',证书 = 'A'union all select id = '00' ,班组id = 'A2',人员id = 'A',证书 = 'A'union all select id = '00' ,班组id = 'A3',人员id = '班长',证书 = '班长证书'union all select id = '00' ,班组id = 'A4',人员id = '副班长',证书 = '证书'union all select id = '00' ,班组id = 'A5',人员id = 'A',证书 = 'A'union all select id = '01' ,班组id = 'A1',人员id = 'A',证书 = 'A'union all select id = '01' ,班组id = 'A1',人员id = '班长',证书 = '班长证'union all select id = '01' ,班组id = 'A1',人员id = 'C',证书 = 'A'union all select id = '01' ,班组id = 'A2',人员id = 'A',证书 = 'A'union all select id = '01' ,班组id = 'A3',人员id = '班长',证书 = '班长证书'union all select id = '01' ,班组id = 'A4',人员id = '副班长',证书 = '证书'union all select id = '01' ,班组id = 'A5',人员id = 'A',证书 = 'A' ) select id ,sum(count(distinct 班组id)) over(partition by id) 班组数量 -- 根据 上一层的计算 ,班组id --,有班长 = (case when sum(count(case when 人员id = '班长' then 1 else null end)) over(partition by id, 班组id) > 0 then 'yes' else null end) --,班长有证书 = case when sum(count(case when 人员id = '班长' and 证书 like '班长证%' then 1 else null end)) over(partition by id, 班组id) > 0 then 'yes' else null end ,有班长2 = max(case when 人员id = '班长' then 'yes' else '' end) ,班长有证书2 = max(case when 人员id = '班长'and 证书 like '班长证%' then 'yes' else '' end) from t1 group by id, 班组id -- 你看看这是否有区别
炎同学要努力 2023-06-16
  • 打赏
  • 举报
回复

我又来了

内容概要:本文研究基于条件生成对抗网络(C-GAN)的风光联合出力极端场景生成方法,旨在应对风能和光伏发电出力的不确定性与波动性,提升电力系统在极端情况下的可靠性与稳定性。通过构建C-GAN模型,结合风速、光照强度等气象条件作为条件变量,生成符合实际统计特性的极端出力场景,为电力系统规划、调度及风险评估提供高价值的输入数据。文中详细阐述了C-GAN的网络结构设计、损失函数构建、训练流程及生成结果的评估方法,并通过Python代码实现验证了模型在捕捉极端场景特征方面的有效性。; 适合人群:具备一定Python编程基础和机器学习基础知识,从事新能源电力系统、智能电网、电力调度、场景生成与风险评估等相关领域的科研人员及工程师,尤其适合研究生及以上层次的研究者。; 使用场景及目标:①用于新能源电力系统中风、光出力不确定性建模与极端场景仿真;②支撑电力系统安全评估、备用容量配置、优化调度等决策过程;③为含高比例可再生能源的电网提供数据驱动的风险预警与应对策略研究工具; 阅读建议:建议读者结合提供的Python代码进行实践操作,重点关注C-GAN的条件输入设计、训练稳定性优化及生成样本的质量评估方法,同时可扩展应用于其他多能源耦合系统的场景生成任务中。
内容概要:本文围绕基于电流和功率两种模型预测控制(MPC)的三相并网逆变器闭环仿真展开研究,重点探讨了有限控制集模型预测控制(FCS-MPC)在并网逆变器中的应用。通过Simulink仿真平台构建系统模型,别实现了电流预测与功率预测两种控制策略的闭环控制,详细析了其在动态响应、稳态精度及抗干扰能力等方面的性能表现。研究涵盖控制算法建模、系统仿真验证以及与传统控制方法的对比析,深入探究了预测模型构建、代价函数设计和最优开关矢量选择等关键技术环节,旨在提升并网逆变器的电能质量、系统稳定性及对复杂电网工况的适应能力。; 适合人群:具备电力电子、自动控制理论基础,从事新能源发电、微电网或电力系统仿真实践的研发人员及高校研究生。; 使用场景及目标:①掌握模型预测控制在三相并网逆变器中的具体实现方法;②比较电流型与功率型MPC控制策略的优劣;③为高比例新能源并网系统的控制器设计提供仿真依据和技术参考。; 阅读建议:建议结合Matlab/Simulink环境动手复现文中仿真模型,重点关注预测模型构建、代价函数设计及开关矢量选择逻辑,同时可拓展至不同工况(如电网不平衡、负载突变)下的控制性能测试。
内容概要:本文深入探讨了AI大模型在网络安全领域的四大核心应用:智能漏洞挖掘、自动化代码审计、攻击路径自动析以及AI辅助安全竞赛(CTF)。通过结合自然语言处理、多智能体协作、图神经网络与检索增强生成(RAG)等先进技术,AI实现了从漏洞发现、PoC生成、代码审计到攻击链路溯源的全流程自动化,显著提升了安全响应效率与准确性,并推动网络安全范式从被动防御向主动智能决策演进。文中还介绍了多个前沿工具与实战案例,展示了AI在提升漏洞检出率、降低误报率、加速解题过程等方面的卓越能力。; 适合人群:具备一定网络安全基础,从事安全研究、渗透测试、代码审计或CTF竞赛的相关技术人员,以及关注AI与安全融合发展的技术管理者。; 使用场景及目标:①利用AI实现CVE漏洞的快速PoC生成与验证;②开展高精度、低误报的自动化代码审计;③进行APT攻击的全链路溯源与威胁狩猎;④在CTF竞赛中借助AI压缩解题搜索空间、生成Exploit脚本,提升竞赛表现。; 阅读建议:此资料强调AI在安全领域的工程化落地,建议读者结合实际工具(如REPOAUDIT、DeepAudit、FuzzingBrain等)进行实践操作,同时重视私有知识图谱构建与结构化Prompt设计,以充发挥AI潜力并规避幻觉风险。

34,875

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧