這是我的示例資料表:
| ID | 狀態 |
|---|---|
| 1 | 新的 |
| 1 | 處理 |
| 2 | 新的 |
| 2 | 處理 |
| 3 | 新的 |
| 3 | 處理 |
| 4 | 處理 |
| 5 | 新的 |
我在這里要解決的是計算從“新”狀態到“已處理”狀態的轉換率。從資料集中,只有 ID 號 1、2 和 3 滿足了我的問題的要求,而 ID 號 4 和 5 沒有兩個階段。所以理論上,轉化率應該是3/5 * 100% = 60%。如何選擇資料以計算同時具有“新”和“已處理”狀態的 ID。
這是我嘗試過的代碼,但我知道它是錯誤的,因為它提取了所有 ID 之間沒有鏈接。
SELECT 'Conversion rate from Assigned enquiry to In progess leads' as 'Name', round((a.processed / b.new),3) * 100 as 'Answer'
FROM
(
SELECT cast(count(ID)as float) as processed
from table1
WHERE STATUS_ID = 'Processed'
) as a
cross join
(
SELECT cast(count(ID)as float) as new
from table_1
WHERE STATUS_ID = 'NEW'
) as b
uj5u.com熱心網友回復:
我們可以在這里使用條件聚合:
WITH cte AS (
SELECT CASE WHEN COUNT(CASE WHEN Status = 'New' THEN 1 END) > 0 AND
COUNT(CASE WHEN Status = 'Processed' THEN 1 END) > 0
THEN 1 ELSE 0 END AS cnt
FROM yourTable
GROUP BY ID
)
SELECT 100.0 * SUM(cnt) / COUNT(*)
FROM cte;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/448987.html
上一篇:獲取按ENUM欄位分組的COUNT并將未使用的列舉填充為0
下一篇:Angular無法識別離子標簽
