SQL分組聚合後的關聯處理

2021-10-23 07:12:33 字數 953 閱讀 5245

在進行表關聯時,理想的情況是多張表的原表資料直接可以進行關聯,形成關聯結果。

在特殊情況下,需要對原始表的記錄進行提前處理,將處理之後的結果再進行關聯,以保證關聯之後結果的正確性。

聚合關聯就是一種比較常見的場景,即將每張表分別先進行聚合處理,然後按照對應關聯欄位將聚合結果進行關聯。

例如,有兩張原始明細表,分別是銷售記錄表和成本記錄表。每個客戶有多個訂單,每個訂單有多條銷售記錄,每個訂單對應多條成本記錄,銷售記錄和成本記錄是多對多的關係,需要計算每個客戶、每個訂單的銷售額、成本、毛利和毛利率,不能直接進行兩表關聯,直接關聯資料會出現冗餘。

sql指令碼:

select t1.*,t2.成本,t1.銷售金額-t2.成本 as 毛利,

/*計算毛利率*/

case when t1.銷售金額=0 then 0 else (t1.銷售金額-t2.成本)/t1.銷售金額 end as 毛利率 from (

/*按照客戶、訂單號對銷售額進行聚合*/

select [customer name],substring([job],5,len([job])-4) 訂單號,sum(amount) 銷售金額 from 銷售記錄

group by [customer name],substring([job],5,len([job])-4)

) t1

left join

/*聚合結果進行關聯*/

/*按照客戶、訂單號對成本進行聚合*/

select [customer name],substring([job],5,len([job])-4) 訂單號,sum(amount) 成本 from 成本記錄

group by [customer name],substring([job],5,len([job])-4)

) t2

on t1.[customer name]=t2.[customer name] and t1.訂單號=t2.訂單號

分組聚合後unstacking

讀取employee資料集,求出每個種族的平均工資 employee pd.read csv data employee.csv employee.groupby race base salary mean astype int race american indian or alaskan nat...

pandas 高階處理 分組與聚合

分組與聚合通常是分析資料的一種方式,通常與一些統計函式一起使用,檢視資料的分組情況 想一想其實剛才的交叉表與透視表也有分組的功能,所以算是分組的一種形式,只不過他們主要是計算次數或者計算比例!看其中的效果 案例 不同顏色的不同筆的 資料 col pd.dataframe color object p...

SQL字串的分組聚合 ZT

本文 於t sql 字串分組聚合,也許你還有更簡單的辦法?今天在看訂閱的rss的時候,看到這麼乙個問題 t sql中如何對分組的資訊進行聚合,並以逗號連線字元 也就是對乙個表中的某個字段進行分組,然後對另乙個字段聚合,如果表達得不太清楚,請看下面的表。原表 parent child charles ...