MySQL sum后再计算percentage的多种解决办法

over() 函数,最简单的一种

以下是SQL片段,在外面嵌套一个Select是因为over 不会SQL语句所有的data sum,而不是 limit 之后的数据,所以需要先limit 在over()

		SELECT b.*,ROUND(b.amount*100 / SUM(b.amount) OVER(),2) AS inv_salesShareFROM (	SELECTcm_cust_no,cm_co_name,SUM ( amount ) AS amount FROM

Cross Join 

通过cross join 把total 作为一个结果集并到sum的sql,然后通过除法计算Percentage。

 SELECT P.PersonID, SUM(PA.Total)SUM(PA.Total) * 100 / [p] AS 'Percentage'FROM Person PJOIN Package PA ON P.PersonID = PA.PackageFKCROSS JOIN (SELECT SUM(PA.[Total]) AS [p] FROM Package PA) tGROUP BY P.PersonID

 通过两个Select 嵌套查询

这种方法适合简单Case,如果条件复杂时,第二个Select就会臃肿,比如 增加 时间条件、Group,Limit等。

SELECT PA.PersonID, SUM(PA.Total),SUM(PA.Total) * 100.0 / (SELECT SUM(PA.Total) FROM PA)
FROM Package PA
GROUP BY PA.PersonID;

 通过with 函数处理

此方法简单,分块处理,一些复杂的SQL可以考虑使用with方法处理。

有时间验证下

;WITH PersonTotals AS
(SELECT P.PersonID, SUM(CAST(PA.Total AS MONEY)) TotalFROM Person PJOIN Package PA ON P.PersonID = PA.PackageFKGROUP BY P.PersonID
),
GrandTotal AS
(SELECT SUM(PT.Total) TotalFROM PersonTotals PT
)
SELECT PT.*, (PT.Total / NULLIF((SELECT Total From GrandTotal),0)) * 100 Percentage
FROM PersonTotals PT

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

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

相关文章

将IP添加到基础设计

将IP添加到基础设计 本节介绍将AXI IP添加到设计中。 添加低速外设(AXI4 Lite) 1.将等效IP添加到框图中。例如,对于AXI GPIO: a.右键单击方框图中的任意位置,然后选择“添加IP”。 b.搜索并双击AXI GPIO以添加IP。 2.双…

如何自己搭建一个简单的web api 环境 主流语言C# 编译器推荐VS2022

标题如何自己搭建一个简单的web api 环境 主流语言C# 编译器推荐VS2022 搭建一个简单的Web API环境,可以使用C#和Visual Studio 2022来实现。这里我们将使用ASP.NET Core来创建一个基本的Web API项目。以下是详细步骤: 安装必要的软件 Visual Studio 2…

[数据集]EEG数据集汇总

目录 1. EEG简介 2. 可用数据集 2.1. A large and rich EEG dataset for modeling human visual object recognition 2.2. A multi-modal open dataset for mental-disorder analysis 2.3. An EEG motor imagery dataset for brain computer interface in acute stroke pa…

双指针+前缀和,蓝桥云课 近似gcd

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 0近似gcd - 蓝桥云课 (lanqiao.cn) 二、解题报告 1、思路分析 考虑近似gcd的子数组的特点:不为g的倍数的数字个数小于等于1 我们用前缀和pre[]来存储不为g的倍数的数字个数 那么枚举左端点l&a…

数据结构(八)二叉树、哈希查找

文章目录 一、树(一)概念1. 前序遍历:根左右2. 中序遍历:左根右3. 后序遍历:左右根4. 层序遍历:需要借助队列实现 (二)代码实现:二叉树1. 结构体定义2. 创建二叉树1. 注意…

pytest识别测试用例的机制以及和unittest的区别

pytest识别测试用例的机制 文件 以test_开头或以_test结尾的python文件,即test_.py或_test.py类,在第一点识别到的文件中的类,且满足一下任一条件: 1)以Test_开头,且没有__init__()初始化函数的类&#xf…

LED显示屏模组七大参数

LED模组是LED显示屏的核心组件,它包含LED线路板和外壳,将LED灯珠按照特定规则排列并封装,通常还会进行防水处理。随着LED显示屏行业的发展及其广泛应用,LED模组的功能和作用变得愈加重要。那么,LED模组的七大参数是什么…

黑马es数据同步mq解决方案

方式一:同步调用 优点:实现简单,粗暴 缺点:业务耦合度高 方式二:异步通知 优点:低耦含,实现难度一般 缺点:依赖mq的可靠性 方式三:监听binlog 优点:完全解除服务间耦合 缺点:开启binlog增加数据库负担、实现复杂度高 利用MQ实现mysql与elastics…

深度学习创新点不大但有效果,可以发论文吗?

深度学习中创新点比较小,但有效果,可以发论文吗?当然可以发,但如果想让编辑和审稿人眼前一亮,投中更高区位的论文,写作永远都是重要的。 那么怎样“讲故事”才能让论文更有吸引力?我总结了三点…

【Python】解决Python报错:TypeError: ‘int‘ object is not iterable

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

PESocket客户端链接服务器出现The requested operation caused a stack overflow.

注意服务器启动、设置日志的顺序:服务先启动、设置日志后启动 bug描述:先设置服务器的日志,在启动服务器,具体代码如下,启动后出现The requested operation caused a stack overflow. //客户端服务器设置日志client.S…

操作系统真象还原:编写MBR主引导记录,让我们开始掌权

第2章-编写MBR主引导记录,让我们开始掌权 这是一个网站有所有小节的代码实现,同时也包含了Bochs等文件 在开机的一瞬间,也就是接电的一瞬间, CPU 的 CS: ip 寄存器被强制初始化为 0XF000: 0XFFF0。由于开机的时候处于实模式&…

JS函数高级技巧之纯函数、高级函数、懒函数和函数组合

纯函数 首先,纯函数要满足两个条件: 给相同的参数返回相同的结果;不产生任何副作用 function double(num){return num * 2 }只要给num的值不变,它返回的结果也不会变,而且这个函数执行的过程中没有对外界造成影响&…

一款开箱即用的Markdown 编辑器!【送源码】

开源的 Markdown 编辑器 Cherry Markdown Editor 是一款前端-markdown-编辑器-组件,具有开箱即用、轻量简洁、易于扩展等特点,它可以运行在浏览器或服务端 (NodeJs). 当 Cherry Markdown 编辑器支持的语法不满足开发者需求时,可以快速的进行…

【Python】解决Python报错:TypeError: ‘xxx‘ object is not subscriptable

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

oracle11g rac 修改spfile

今天一套环境,发现2个节点的spfile不一致,正好有停机时间就修改spfile配置 SYSorcl1> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile …

软件无线电学习-发射机体系结构

本文知识内容摘自《软件无线电原理和应用》 软件无线电主要由发射机和接收机两大部分组成。软件无线电发射机的主要功能是把需发射或传输的用户信息(话音、数据或图像)经基带处理(完成诸如FM、AM、FSK、PSK、MSK、QAM 等调制)和上变频,调制到规定的载频(中心频率)上…

.NET Core NPOI导出Word,浏览器下载

后台 public MemoryStream GetLavPrintMS(InvPrintDTO dto){using var ms new MemoryStream();string sqlStr "";var table GetDataTable(sqlStr);var list DataTableHelper.DataTableToList<DTO>(table);var doc CreateWordData(list);doc.Write(ms);byt…

Gir clone 设置代理与错误

git查看、配置、删除代理 link git config --global https.proxy http://127.0.0.1:1080 git config --global http.proxyhttps://stackoverflow.com/questions/11265463/reset-git-proxy-to-default-configuration git config --global --unset http.proxy git config --gl…

SpringMVC 数据映射VC

从 view 层发送请求到Controller&#xff0c;在Controller中获取参数&#xff1a; 在不输入值时会报400&#xff0c;参数错误 在不输入值时num默认为null 没有找到对应标签名称叫nums的&#xff0c;输入任何值时都报400 设置required默认值为false&#xff0c;即使表单没有nums…