我有两个包含以下模式的表:
活动开始表:
ActivityID | Timestamp
A1 T1
A2 T2
A3 T3
A4 T4
活动已完成表:
ActivityID | Timestamp
A1 T1
A2 T2
A3 T4
现在,我想计算完成的活动的总百分比。
我想过做两个表的左外连接。但我可以通过解决方案思考。有人可以帮我这个吗?
答案 0 :(得分:0)
select count(c.ActivityID) * 100 / count(s.ActivityID) as percentage
from ActivityStarted s
left join ActivityCompleted c on s.ActivityID = c.ActivityID
答案 1 :(得分:0)
如果活动只能出现在已完成的表中,如果它一旦出现在已启动的表中,那么您实际上并不需要将这些表连接在一起。相反,您可以将完成的任务计数除以总任务计数。
SELECT 100.0 * (SELECT COUNT(DISTINCT ActivityID) FROM ActivityCompleted) /
(SELECT COUNT(DISTINCT ActivityID) FROM ActivityStarted)
在这里演示:
答案 2 :(得分:0)
只有已完成的活动将具有活动完成时间的值 - 使用此事实,您可以在两个表之间执行左外连接后获得百分比:
SELECT
CAST(SUM(CASE WHEN C.TIMESTAMP IS NOT NULL THEN 1 ELSE 0 END) AS FLOAT)/COUNT(*)
FROM START S
LEFT JOIN COMPLETE C ON C.ID = S.ID