狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

如何用SQL進(jìn)行數(shù)據(jù)庫表的小計(jì)與總計(jì)計(jì)算?ROLLUP功能詳解

admin
2024年3月13日 12:10 本文熱度 646

在數(shù)據(jù)分析中,常常需要進(jìn)行數(shù)據(jù)的匯總和聚合分析。

之前的文章中已經(jīng)介紹了聚合函數(shù)、開窗函數(shù)、group by語句等方法來實(shí)現(xiàn)數(shù)據(jù)表的聚合分析。接下來,我們將使用MySQL和PostgreSQL這兩個(gè)常見的關(guān)系型數(shù)據(jù)庫,來演示如何在SQL中使用ROLLUP實(shí)現(xiàn)數(shù)據(jù)庫表的小計(jì)和總計(jì)計(jì)算。

示例數(shù)據(jù):

首先,我們創(chuàng)建一個(gè)簡單的sales表,并插入一些數(shù)據(jù)。

-- 建表

CREATE TABLE sales (

year INT,

quarter INT,

amount DECIMAL(10, 2)

);

 

-- 插入數(shù)據(jù)

INSERT INTO sales VALUES

(2021, 1, 100),

(2021, 2, 150),

(2021, 3, 200),

(2021, 4, 250),

(2022, 1, 120),

(2022, 2, 180),

(2022, 3, 220),

(2022, 4, 270);

 

-- 數(shù)據(jù)表如下:

SELECT

  *

FROM

  Sales

;

數(shù)據(jù)表如下:

01 MySQL中的ROLL UP  

以下查詢按年份和季度對銷售額進(jìn)行匯總,并使用ROLLUP生成各級別的匯總。

SELECT

  year,

  quarter,

  SUM(amount) as total_amount

FROM

  Sales

GROUP BY

  year,

  quarter WITH ROLLUP

;

結(jié)果如下:

當(dāng)使用ROLLUP時(shí),任何被GROUP BY的列都可能在結(jié)果集中出現(xiàn)NULL值,這表示該列的匯總值。上面的示例中,2021年所有季度的匯總值為700,2022年所有季度的匯總值為790,所有年份的匯總值為1490。

若要將NULL換成小計(jì)或者總計(jì),可以結(jié)合COALESCE函數(shù),見如下SQL示例:

SELECT

  COALESCE( year,'總計(jì)') as year,

  COALESCE( quarter,'小計(jì)') as quarter,

  SUM(amount) as total_amount

FROM

  sales

GROUP BY

  year,

  quarter WITH ROLLUP

;

結(jié)果如下:

02 PostgreSQL中的ROLL UP  

PostgreSQL也支持ROLLUP,但其語法略有不同。在PostgreSQL中,你需要在GROUP BY子句后使用ROLLUP()函數(shù)。

SELECT

  year,

  quarter,

  SUM(amount) as total_amount

FROM

  Sales

GROUP BY

  ROLLUP(year, quarter)

ORDER BY  year,quarter

;

結(jié)果如下,和MySQL的結(jié)果一致

若要將NULL換成小計(jì)或者總計(jì),可以結(jié)合COALESCE函數(shù)。這里要注意的是需要將year和quarter字段轉(zhuǎn)換為字符串類型,SQL如下:

SELECT

  COALESCE(year::text,'總計(jì)') AS year,

  COALESCE(quarter::text,'小計(jì)') AS quarter,

  SUM(amount) as total_amount

FROM

  sales

GROUP BY

  ROLLUP(year, quarter)

ORDER BY

  year,quarter

;

若不轉(zhuǎn)換為字符串類型,會(huì)報(bào)如下錯(cuò)誤:

查詢結(jié)果如下:

在實(shí)踐中,根據(jù)實(shí)際需求和數(shù)據(jù)庫類型,可以使用相應(yīng)的語法來實(shí)現(xiàn) ROLL UP 功能,并根據(jù)結(jié)果進(jìn)行進(jìn)一步的數(shù)據(jù)分析和報(bào)表制作。


該文章在 2024/3/14 9:12:37 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved