Re: [SQL ] percentage 分類

作者: TeemingVoid (TeemingVoid)   2014-03-22 16:16:41
※ 引述《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;
作者: kafel0936 (je ne pense qu'a toi清7)   2014-03-23 00:21:00
十分謝謝,總之無法直接用類似partition方式
作者: TeemingVoid (TeemingVoid)   2014-03-23 00:43:00
不客氣。 因為 MySQL 不支援 ↑

Links booklink

Contact Us: admin [ a t ] ucptt.com