欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL sum后再計(jì)算percentage的多種解決辦法

 更新時(shí)間:2024年06月03日 08:20:41   作者:MyFreeIT  
這篇文章主要介紹了MySQL sum后再計(jì)算percentage的多種解決辦法,over() 函數(shù),Cross Join,Select 嵌套查詢以及 with 函數(shù)處理,文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下

over() 函數(shù),最簡單的一種

以下是SQL片段,在外面嵌套一個(gè)Select是因?yàn)閛ver 不會(huì)SQL語句所有的data sum,而不是 limit 之后的數(shù)據(jù),所以需要先limit 在over()

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

Cross Join

通過cross join 把total 作為一個(gè)結(jié)果集并到sum的sql,然后通過除法計(jì)算Percentage。

 SELECT 
     P.PersonID, SUM(PA.Total)
     SUM(PA.Total) * 100 / [p] AS 'Percentage'
 FROM 
     Person P
 JOIN 
     Package PA ON P.PersonID = PA.PackageFK
 CROSS JOIN 
     (SELECT SUM(PA.[Total]) AS [p] 
      FROM Package PA) t
 GROUP BY 
     P.PersonID

通過兩個(gè)Select 嵌套查詢

這種方法適合簡單Case,如果條件復(fù)雜時(shí),第二個(gè)Select就會(huì)臃腫,比如 增加 時(shí)間條件、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 函數(shù)處理

此方法簡單,分塊處理,一些復(fù)雜的SQL可以考慮使用with方法處理。

有時(shí)間驗(yàn)證下

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

到此這篇關(guān)于MySQL sum后再計(jì)算percentage的多種解決辦法的文章就介紹到這了,更多相關(guān)MySQL計(jì)算percentage內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql數(shù)據(jù)庫鎖定機(jī)制詳細(xì)介紹

    Mysql數(shù)據(jù)庫鎖定機(jī)制詳細(xì)介紹

    這篇文章主要介紹了Mysql數(shù)據(jù)庫鎖定機(jī)制詳細(xì)介紹,本文用大量內(nèi)容講解了Mysql中的鎖定機(jī)制,例如MySQL鎖定機(jī)制簡介、合理利用鎖機(jī)制優(yōu)化MySQL等內(nèi)容,需要的朋友可以參考下
    2014-12-12
  • MySQL查看所有用戶的實(shí)現(xiàn)

    MySQL查看所有用戶的實(shí)現(xiàn)

    本文主要介紹了MySQL查看所有用戶的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 詳解MySQL中的事務(wù)與ACID特性

    詳解MySQL中的事務(wù)與ACID特性

    這篇文章主要為大家介紹了Mysql?中的事務(wù),包括事務(wù)的基本概念和?ACID?特性、事務(wù)的隔離級別和具體實(shí)現(xiàn)方法等,并提供相應(yīng)的代碼示例,希望對大家有所幫助
    2023-05-05
  • MySQL中join查詢的深入探究

    MySQL中join查詢的深入探究

    數(shù)據(jù)庫中的JOIN稱為連接,連接的主要作用是根據(jù)兩個(gè)或多個(gè)表中的列之間的關(guān)系,獲取存在于不同表中的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL中join查詢的深入探究,需要的朋友可以參考下
    2022-11-11
  • mysql中關(guān)于between和in的區(qū)別

    mysql中關(guān)于between和in的區(qū)別

    這篇文章主要介紹了mysql中關(guān)于between和in的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • MySQL8.0新特性之支持原子DDL語句

    MySQL8.0新特性之支持原子DDL語句

    這MySQL 8.0開始支持原子數(shù)據(jù)定義語言(DDL)語句。此功能稱為原子DDL。這篇文章主要介紹了MySQL8.0新特性——支持原子DDL語句,需要的朋友可以參考下
    2018-07-07
  • 詳解MYSQL中重命名procedure的一種方法

    詳解MYSQL中重命名procedure的一種方法

    這篇文章主要介紹了MYSQL中重命名procedure的一種方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-05-05
  • mysql使用報(bào)錯(cuò)1142(42000)的問題及解決

    mysql使用報(bào)錯(cuò)1142(42000)的問題及解決

    這篇文章主要介紹了mysql使用報(bào)錯(cuò)1142(42000)的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • MySQL中Join的算法(NLJ、BNL、BKA)詳解

    MySQL中Join的算法(NLJ、BNL、BKA)詳解

    這篇文章主要介紹了MySQL中Join的算法(NLJ、BNL、BKA)詳解,Join是MySQL中最常見的查詢操作之一,用于從多個(gè)表中獲取數(shù)據(jù)并將它們組合在一起,本文將探討這兩種算法的工作原理,以及如何在MySQL中使用它們
    2023-07-07
  • 解決MySQL報(bào)錯(cuò)1267 - Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPL問題

    解決MySQL報(bào)錯(cuò)1267 - Illegal mix of coll

    這篇文章主要給大家介紹了解決MySQL報(bào)錯(cuò)1267 - Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPL的問題,文中有詳細(xì)的解決方案,需要的朋友可以參考下
    2023-09-09

最新評論