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.mzph.cn/news/595145.shtml

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

相关文章

【ESP32接入国产大模型之文心一言】

1. 怎样接入文心一言 随着人工智能技术的不断发展,自然语言处理领域也得到了广泛的关注和应用。在这个领域中,文心一言作为一款强大的自然语言处理工具,具有许多重要的应用价值。本文将重点介绍如何通过ESP32接入国产大模型之文心一言api&am…

图片中src属性绑定不同的路径

vue3 需求是按钮disable的时候,显示灰色的icon;非disable状态,显示白色的icon 一开始src写成三元表达式,发现不行,网上说src不能写成三元表达式,vue会识别成字符串 最后的解决方案 同时,发现…

在Cadence中单独添加或删除器件与修改网络的方法

首先需要在设置中使能 ,添加或修改逻辑选项。 添加或删除器件,点击logic-part,选择需要添加或删除的器件,这里的器件必须是PCB中已经有的器件,Refdes中输入添加或删除的器件标号,点击Add添加。 添加完成后就会显示在R1…

基于springboot智慧食堂管理系统源码和论文

随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。网上管理,它将是直接管理“智慧食堂”系统的最新形式。本论文是以构建“智慧食堂”系统为目标,使用java技术制作&…

odoo17 | 基本视图

前言 我们在上一章中已经看到Odoo能够为给定模型生成默认视图。在实践中,默认视图是绝对不可接受的用于商业应用程序。相反,我们至少应该以逻辑方式组织各种字段。 视图在带有动作和菜单的XML文件中定义。它们是ir.ui.view模型的实例。 在我们的房地产…

OpenHarmony从入门到放弃(一)

OpenHarmony从入门到放弃(二) 一、OpenHarmony的基本概念和特性 OpenHarmony是由开放原子开源基金会孵化及运营的开源项目,其目标是构建一个面向全场景、全连接、全智能的时代的智能终端设备操作系统。 分布式架构 OpenHarmony采用分布式…

Termius for Mac/Win:一款功能强大的终端模拟器、SSH 和 SFTP 客户端软件

随着远程工作和云技术的普及,对于高效安全的远程访问和管理服务器变得至关重要。Termius,一款强大且易用的终端模拟器、SSH 和 SFTP 客户端软件,正是满足这一需求的理想选择。 Termius 提供了一站式的解决方案,允许用户通过单一平…

什么是Alibaba Cloud Linux?完全兼容CentOS,详细介绍

Alibaba Cloud Linux是基于龙蜥社区OpenAnolis龙蜥操作系统Anolis OS的阿里云发行版,针对阿里云服务器ECS做了大量深度优化,Alibaba Cloud Linux由阿里云官方免费提供长期支持和维护LTS,Alibaba Cloud Linux完全兼容CentOS/RHEL生态和操作方式…

如何修复卡在恢复模式的Android 手机并恢复丢失的数据

Android 系统恢复是一项内置功能,如果您的 Android 设备无法正常工作或触摸屏出现问题,该功能会很有帮助。您可以启动进入恢复模式并使用它来恢复出厂设置您的 Android 设备,而无需访问设置。此外,它还经常用于重新启动系统、从 A…

使用生成式AI查询大型BI表

在拥有大量表格形式数据的组织中,数据分析师的工作是通过提取、转换和围绕数据构建故事来理解这些数据。 分析师访问数据的主要工具是 SQL。 鉴于大型语言模型 (LLM) 令人印象深刻的功能,我们很自然地想知道人工智能是否可以帮助我们将信息需求转化为格式…

复试 || 就业day03(2024.01.03)项目一

文章目录 前言scikit-learn实现简单线性回归scikit-learn实现多元线性回归(二元)总结 前言 💫你好,我是辰chen,本文旨在准备考研复试或就业 💫本文内容来自某机构网课,是我为复试准备的第一个项…

基于Vue开发的一个仿京东电商购物平台系统(附源码下载)

电商购物平台项目 项目完整源码下载 基于Vue开发的一个仿京东电商购物平台系统 Build Setup # csdn下载该项目源码压缩包 解压重命名为sangpinghui_project# 进入项目目录 cd sangpinghui_project# 安装依赖 npm install# 建议不要直接使用 cnpm 安装以来,会有各…

知识图谱 vs GPT

简介: 当我们谈论知识图谱时,我们指的是一种结构化的知识表示形式,是一种描述真实世界中事物及其关系的语义模型,用于描述实体之间的关系。它通过将知识组织成图形结构,提供了一种更全面、准确和智能的信息处理方式。知…

每日一题(LeetCode)----二叉树--二叉树的层平均值

每日一题(LeetCode)----二叉树–二叉树的层平均值 1.题目(637. 二叉树的层平均值) 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 1: 输入:root […

微信小程序开发会务管理系统解决方案

随着移动通讯业务以及信息技术的快速发展,移动端的应用 (APP)的功能越来越多样越来越受欢迎。微信、支付宝以及各大手机品牌开始着手于“小程序”“轻应用”的开发化,在信息技术较为发达、社交软件较为集中的当今社会中,使用微信小程序开发程…

【SpringBoot框架篇】34.使用Spring Retry完成任务的重试

文章目录 简要1.为什么需要重试?2.添加maven依赖3.使用Retryable注解实现重试4.基于RetryTemplate模板实现重试 简要 Spring实现了一套重试机制,功能简单实用。Spring Retry是从Spring Batch独立出来的一个功能,已经广泛应用于Spring Batch,…

python封装接口自动化测试套件 !

在Python中,我们可以使用requests库来实现接口自动化测试,并使用unittest或pytest等测试框架来组织和运行测试套件。以下是一个基本的接口自动化测试套件封装示例: 首先,我们需要安装所需的库: pip install requests …

pytest conftest通过fixture实现变量共享

conftest.py scope"module" 只对当前执行的python文件 作用 pytest.fixture(scope"module") def global_variable():my_dict {}yield my_dict test_case7.py import pytestlist1 []def test_case001(global_variable):data1 123global_variable.u…

qt 异常汇总

1. C2338 No Q_OBJECT in the class with the signal (编译源文件 ..\..\qt\labelme-master\src\mainwindow.cpp mainwindow头文件中的类没有Q_OBJECT宏定义,或者其子类或者其他依赖没有Q_OBJECT宏定义。 全部qt类都要写上Q_OBJECT. 2. C2385 对connect的访…

【c++】vector的特性及使用

目录 一、vector的介绍及使用 1、vector迭代器的使用 2、vector的空间增长 3、vector的迭代器失效问题 二、vector的深度剖析与模拟实现 一、vector的介绍及使用 1、vector迭代器的使用 vector的迭代器就是原生态指针。vector的迭代器使用方法与string的迭代器使用方法相…