Re: [SQL ] percentage 分類
※ 引述《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
03/23 00:21, 1F
→
03/23 00:43, , 2F
03/23 00:43, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):