Re: [SQL ] percentage 分類

看板Database作者 (TeemingVoid)時間10年前 (2014/03/22 16:16), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《kafel0936 (je ne pense qu'a toi)》之銘言: : 請問一下各位先進, : 我用mysql,寫 count(*)/(select count (*) from 資料來源) as percentage : 如果我有不同群組要計算比例,要怎麼分群? : 我用group by,結果分母都是所有資料的數量, : 我要的是分群數量為分母... 1. 先統計第一層的分組數量 2. 再統計第一層+第二層的分組數量 3. 將上述兩個結果集 Join 在一起 以下例來說: create table Lab0322 ( CustomerID int, OrderDate char(10), ProductID char(2), OrderNo int ); insert into Lab0322 values (1, '2012-01-05', 'AA', 1); insert into Lab0322 values (2, '2012-01-05', 'AB', 1); insert into Lab0322 values (3, '2012-01-05', 'AA', 1); insert into Lab0322 values (3, '2012-01-10', 'DD', 1); insert into Lab0322 values (2, '2012-01-10', 'AA', 1); insert into Lab0322 values (1, '2012-01-15', 'AA', 1); insert into Lab0322 values (2, '2012-01-15', 'AB', 1); insert into Lab0322 values (3, '2012-01-15', 'AA', 1); insert into Lab0322 values (3, '2012-01-15', 'DD', 1); insert into Lab0322 values (1, '2012-01-20', 'AB', 1); insert into Lab0322 values (2, '2012-01-20', 'DD', 1); 執行下列查詢,列出的是各產品的銷售次數: select ProductID, count(*) GroupCount from Lab0322 group by ProductID 下列的查詢,更進一步統計各產品與客戶的銷售次數: select ProductID, CustomerID, count(*) SubGroupCount from Lab0322 group by ProductID, CustomerID 好了,將上述兩個結果集,依照相同的產品編號 JOIN 在一起, 便可統計出各個客戶在該品項的比例: select R.ProductID, R.CustomerID, SubGroupCount, SubGroupCount * 1.0 / GroupCount as Ratio from ( select ProductID, count(*) GroupCount from Lab0322 group by ProductID ) L join ( select ProductID, CustomerID, count(*) SubGroupCount from Lab0322 group by ProductID, CustomerID ) R on R.ProductID = L.ProductID; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.38.70.158

03/23 00:21, , 1F
十分謝謝,總之無法直接用類似partition方式
03/23 00:21, 1F

03/23 00:43, , 2F
不客氣。 因為 MySQL 不支援 ↑
03/23 00:43, 2F
文章代碼(AID): #1JBKRiXB (Database)
文章代碼(AID): #1JBKRiXB (Database)