作者konkonchou (朴实且无华)
看板Database
标题Re: [SQL ] 计算良率join
时间Wed Jan 12 04:06:53 2022
※ 引述《ctr1 (【积π】)》之铭言:
: -------------------------------
: ID QTY GOOD BAD TEST
: -------------------------------
: A 1000 800 200 F
: A 200 90 110 R
: A 110 80 30 R
: B 500 450 50 F
: B 50 30 20 R
: 想请教板上各位前辈,
: 若是我最终想呈现的结果为
: ID FIRST_YIELD FINAL_YIELD
: ----------------------------
: A 0.8 0.97
: B 0.9 0.96
: 0.8 = 800/1000 0.97 = (800+90+80)/1000
: 0.9 = 450/500 0.96 = (450+30)/500
: 我目前想到的做法是
: 先分别计算
: FIRST_YIELD、LAST_YIELD
: 再透过JOIN的方式将资料组合起来
: 呈现最终结果,
: 是否有更好的撰写方式
: 谢谢指导~
CREATE TABLE #Temp (ID nvarchar(50), Qty float, Good float,
BAD float, TEST varchar(50));
GO
INSERT INTO #Temp VALUES
('A', 1000, 800, 200, 'F')
, ('A', 200, 90, 110, 'R')
, ('A', 110, 80, 30, 'R')
, ('B', 500, 450, 50, 'F')
, ('B', 50, 30, 20, 'R')
Select ID
, max(case when TEST='F' then Good/Qty else 0 end) as FIRST_YIELD
, 1-min(BAD)/max(Qty) as FINAL_YIELD from #Temp Group by ID
-------------------------------
ID FIRST_YIELD FINAL_YIELD
A 0.8 0.97
B 0.9 0.96
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.163.226.137 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1641931618.A.2C3.html
1F:→ ctr1: 谢谢大大,我会从这角度去研究 01/12 08:26
2F:推 tsongs: 建议用sum(Good)/max(qty) 因为实务上可能会分批 02/25 15:37