C#高级:Lambda表达式分组处理2(WITH ROLLUP关键字)

目录

一、问题引入

二、with rollup查询

三、去掉多余数据

四、拓展


一、问题引入

查询SQL后结果如下,字段分别是用户、项目、批次、工作时间:

SELECT UserID,ProjectID,ProBatchesID,WorkHour 
FROM  MAINTABLE
GROUP BY
HourFiller
,ProjectID 
,ProBatchesID 

结果:

UserIDProjectIDProBatchesIDWorkHour
0400bb0e-a957-479e-98e0-60c4542eefa6E963F8E2-4713-4B7C-A154-CC4ED75A0CAA0C00F223-F9B7-4C23-A762-CC8A23D25F2C72
0400bb0e-a957-479e-98e0-60c4542eefa6E963F8E2-4713-4B7C-A154-CC4ED75A0CAA596BDF31-0038-4C36-AA95-B03F3D9C7B06224
052a3c6e-3a0e-44d2-8d5c-177760d03768E963F8E2-4713-4B7C-A154-CC4ED75A0CAA0C00F223-F9B7-4C23-A762-CC8A23D25F2C72
052a3c6e-3a0e-44d2-8d5c-177760d03768E963F8E2-4713-4B7C-A154-CC4ED75A0CAA596BDF31-0038-4C36-AA95-B03F3D9C7B06224
056f117a-163e-4cd9-acf1-362837c9904a53aa4cf1-99bf-46a0-acd6-11fc5b28e0761accce0a-1d4e-4e73-aa6f-9e2da0337f608
056f117a-163e-4cd9-acf1-362837c9904a53aa4cf1-99bf-46a0-acd6-11fc5b28e076f3f3e46b-8ca8-44cb-a4b5-5a8970f905ba2
056f117a-163e-4cd9-acf1-362837c9904a53aa4cf1-99bf-46a0-acd6-11fc5b28e076f719e55b-8142-43a7-a865-29e053d0566024
071632d3-65ae-4f13-b45d-e158e46bbf24E963F8E2-4713-4B7C-A154-CC4ED75A0CAA0C00F223-F9B7-4C23-A762-CC8A23D25F2C16
071632d3-65ae-4f13-b45d-e158e46bbf24E963F8E2-4713-4B7C-A154-CC4ED75A0CAA596BDF31-0038-4C36-AA95-B03F3D9C7B0648

我要的需求是:对每个人每个项目做一个WorkHour的合计,如何运用with rollup实现

二、with rollup查询

WITH TEMP AS(SELECT UserID,ProjectID,ProBatchesID,WorkHour FROM  MAINTABLE GROUP BYHourFiller,ProjectID ,ProBatchesID WITH ROLLUP
)
SELECT * FROM TEMP

结果:

UserIDProjectIDProBatchesIDWorkHour
0400bb0e-a957-479e-98e0-60c4542eefa6E963F8E2-4713-4B7C-A154-CC4ED75A0CAA0C00F223-F9B7-4C23-A762-CC8A23D25F2C72
0400bb0e-a957-479e-98e0-60c4542eefa6E963F8E2-4713-4B7C-A154-CC4ED75A0CAA596BDF31-0038-4C36-AA95-B03F3D9C7B06224
0400bb0e-a957-479e-98e0-60c4542eefa6E963F8E2-4713-4B7C-A154-CC4ED75A0CAANULL296
0400bb0e-a957-479e-98e0-60c4542eefa6NULLNULL296
052a3c6e-3a0e-44d2-8d5c-177760d03768E963F8E2-4713-4B7C-A154-CC4ED75A0CAA0C00F223-F9B7-4C23-A762-CC8A23D25F2C72
052a3c6e-3a0e-44d2-8d5c-177760d03768E963F8E2-4713-4B7C-A154-CC4ED75A0CAA596BDF31-0038-4C36-AA95-B03F3D9C7B06224
052a3c6e-3a0e-44d2-8d5c-177760d03768E963F8E2-4713-4B7C-A154-CC4ED75A0CAANULL296
052a3c6e-3a0e-44d2-8d5c-177760d03768NULLNULL296
056f117a-163e-4cd9-acf1-362837c9904a53aa4cf1-99bf-46a0-acd6-11fc5b28e0761accce0a-1d4e-4e73-aa6f-9e2da0337f608
056f117a-163e-4cd9-acf1-362837c9904a53aa4cf1-99bf-46a0-acd6-11fc5b28e076f3f3e46b-8ca8-44cb-a4b5-5a8970f905ba2
056f117a-163e-4cd9-acf1-362837c9904a53aa4cf1-99bf-46a0-acd6-11fc5b28e076f719e55b-8142-43a7-a865-29e053d0566024
056f117a-163e-4cd9-acf1-362837c9904a53aa4cf1-99bf-46a0-acd6-11fc5b28e076NULL34
056f117a-163e-4cd9-acf1-362837c9904aNULLNULL34
071632d3-65ae-4f13-b45d-e158e46bbf24E963F8E2-4713-4B7C-A154-CC4ED75A0CAA0C00F223-F9B7-4C23-A762-CC8A23D25F2C16
071632d3-65ae-4f13-b45d-e158e46bbf24E963F8E2-4713-4B7C-A154-CC4ED75A0CAA596BDF31-0038-4C36-AA95-B03F3D9C7B0648
071632d3-65ae-4f13-b45d-e158e46bbf24E963F8E2-4713-4B7C-A154-CC4ED75A0CAANULL64
071632d3-65ae-4f13-b45d-e158e46bbf24NULLNULL64

发现结果中不同人不同项目会自动分组合计,因此我们去掉多余的合计数据即可。

三、去掉多余数据

WITH TEMP AS(SELECT UserID,ProjectID,ProBatchesID,WorkHour FROM  MAINTABLE GROUP BYHourFiller,ProjectID ,ProBatchesID WITH ROLLUP
)
SELECT 
CASE WHEN ProBatchesID IS NULL THEN 'Total' ELSE UserID END AS UserID /*列出子数据和总合计*/
,CASE WHEN ProBatchesID IS NULL THEN 'Total' ELSE ProjectID END AS ProjectID
,CASE WHEN ProBatchesID IS NULL THEN 'Total' ELSE  ProBatchesID END AS ProBatchesID 
,WorkHour
FROM TEMP
WHERE ProjectID IS NOT NULL /*去掉多余的合计数据*/ 

结果:

UserIDProjectIDProBatchesIDWorkHour
0400bb0e-a957-479e-98e0-60c4542eefa6E963F8E2-4713-4B7C-A154-CC4ED75A0CAA0C00F223-F9B7-4C23-A762-CC8A23D25F2C72
0400bb0e-a957-479e-98e0-60c4542eefa6E963F8E2-4713-4B7C-A154-CC4ED75A0CAA596BDF31-0038-4C36-AA95-B03F3D9C7B06224
TotalTotalTotal296
052a3c6e-3a0e-44d2-8d5c-177760d03768E963F8E2-4713-4B7C-A154-CC4ED75A0CAA0C00F223-F9B7-4C23-A762-CC8A23D25F2C72
052a3c6e-3a0e-44d2-8d5c-177760d03768E963F8E2-4713-4B7C-A154-CC4ED75A0CAA596BDF31-0038-4C36-AA95-B03F3D9C7B06224
TotalTotalTotal296
056f117a-163e-4cd9-acf1-362837c9904a53aa4cf1-99bf-46a0-acd6-11fc5b28e0761accce0a-1d4e-4e73-aa6f-9e2da0337f608
056f117a-163e-4cd9-acf1-362837c9904a53aa4cf1-99bf-46a0-acd6-11fc5b28e076f3f3e46b-8ca8-44cb-a4b5-5a8970f905ba2
056f117a-163e-4cd9-acf1-362837c9904a53aa4cf1-99bf-46a0-acd6-11fc5b28e076f719e55b-8142-43a7-a865-29e053d0566024
TotalTotalTotal34
071632d3-65ae-4f13-b45d-e158e46bbf24E963F8E2-4713-4B7C-A154-CC4ED75A0CAA0C00F223-F9B7-4C23-A762-CC8A23D25F2C16
071632d3-65ae-4f13-b45d-e158e46bbf24E963F8E2-4713-4B7C-A154-CC4ED75A0CAA596BDF31-0038-4C36-AA95-B03F3D9C7B0648
TotalTotalTotal64

四、拓展

 【拓展】如果题目改为:
对每个项目做一个WorkHour的合计,如何运用with rollup实现
①调整groupby顺序(调整后:)

    GROUP BYProjectID ,HourFiller,ProBatchesID 

②调整case when的判空条件(查表后具体问题具体分析)
③调整筛选范围(查表后具体问题具体分析)

【注意】
以下这种情况,虽然数据都被覆盖为Total,但是实际的值还是null,023d991d-e3cb-412b-9226-ec7fca86833c,null,换句话说,SELECT * FROM TABLE WHERE UserID IS NULL 能筛选出最后一条数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/319366.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第84讲:基于各种场景使用mysqldump逻辑备份数据库

文章目录 1.mysqldump备份工具的语法格式2.使用mysqldump进行全库备份3.备份单个库或者多个库的数据4.备份某个库下的单表或者多表的数据5.mysqldump备份数据库时必加的一些参数5.1.基本参数5.2.核心参数 6.mysqldump备份数据库时的一些其他参数 1.mysqldump备份工具的语法格式…

力扣hot100 翻转二叉树 递归

👨‍🏫 题目地址 😋 AC code /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNod…

异常检测 | Matlab基于GNN图神经网络的异常数据检测

异常检测 | Matlab基于GNN图神经网络的异常数据检测 目录 异常检测 | Matlab基于GNN图神经网络的异常数据检测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 Matlab基于GNN图神经网络的异常数据检测。其核心思想是学习一个函数映射。本次使用人类活动数据&#…

卷积神经网络|制作自己的Dataset

在编写代码训练神经网络之前,导入数据是必不可少的。PyTorch提供了许多预加载的数据集(如FashionMNIST),这些数据集 子类并实现特定于特定数据的函数。 它们可用于对模型进行原型设计和基准测试,加载这些数据集是十分…

leetcode贪心(单调递增的数字、监控二叉树)

738.单调递增的数字 给定一个非负整数 N&#xff0c;找出小于或等于 N 的最大的整数&#xff0c;同时这个整数需要满足其各个位数上的数字是单调递增。 &#xff08;当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。&#xff…

完善 Golang Gin 框架的静态中间件:Gin-Static

Gin 是 Golang 生态中目前最受用户欢迎和关注的 Web 框架&#xff0c;但是生态中的 Static 中间件使用起来却一直很不顺手。 所以&#xff0c;我顺手改了它&#xff0c;然后把这个改良版开源了。 写在前面 Gin-static 的改良版&#xff0c;我开源在了 soulteary/gin-static&a…

汉字的音韵之美:中文拼音的魅力之旅

导语&#xff1a;中文拼音作为汉字的语音表达方式&#xff0c;已经深入人心。它不仅有助于汉字的学习与传播&#xff0c;还为汉语的国际化铺平了道路。本文将为您详细介绍中文拼音的起源、发展及其在我国教育、科技、文化等方面的广泛应用&#xff0c;带您领略这一古老而又现代…

5.云原生安全之ingress配置域名TLS证书

文章目录 cloudflare配置使用cloudflare托管域名获取cloudflare API Token在cloudflare中配置SSL/TLS kubesphere使用cert-manager申请cloudflare证书安装证书管理器创建Secret资源创建cluster-issuer.yaml创建cert.yaml申请证书已经查看申请状态 部署harbor并配置ingress使用证…

AI 编写完整工程代码:自然语言控制,AI 驱动开发 | 开源日报 No.135

gpt-engineer-org/gpt-engineer Stars: 47.6k License: MIT GPT-Engineer&#xff0c;AI 帮你写代码&#xff01; 工作流程&#xff1a; 通过自然语言指定软件AI 编写和执行代码引导 AI 优化改进 核心优势&#xff1a; 可以编辑 preprompts 文件来指定 AI 代理的 “身份”…

Excel 插件:ASAP Utilities Crack

ASAP Utilities是一款功能强大的 Excel 插件&#xff0c;填补了 Excel 的空白。在过去的 20 年里&#xff0c;我们的加载项已经发展成为世界上最受欢迎的 Microsoft Excel 加载项之一。 ASAP Utilities 中的功能数量&#xff08;300 多个&#xff09;可能看起来有点令人眼花缭乱…

【100个Cocos实例】还记得这个指哪打哪的游戏吗?

引言 Cocos中简易实现炉石目标选择箭头效果 23年1月24日0时&#xff0c;由网易代理的暴雪系列游戏在国内正式终止运营。 炉石传说&#xff0c;一个陪伴了笔者4年的游戏&#xff0c;传说、竞技场12胜历历在目。 转眼停服已经快1年&#xff0c;有小道消息称炉石即将回归国服&…

ECMAScript和JavaScript的区别

ECMAScript和JavaScript是相关但不同的概念。下面详细介绍它们的区别和差异。 1.背景&#xff1a; JavaScript是一种由Ecma国际&#xff08;前身为欧洲计算机制造商协会&#xff09;通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛&#xff0c;它往往被称…