计算SQL中的百分比

时间:2016-08-21 14:32:25

标签: mysql sql database

我有两个包含以下模式的表:

活动开始表:

ActivityID | Timestamp

  A1            T1
  A2            T2
  A3            T3
  A4            T4

活动已完成表:

ActivityID | Timestamp

  A1             T1
  A2             T2
  A3             T4

现在,我想计算完成的活动的总百分比。

我想过做两个表的左外连接。但我可以通过解决方案思考。有人可以帮我这个吗?

3 个答案:

答案 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)

在这里演示:

SQLFiddle

答案 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