在 db2 上划分计数?

Dividing counts on db2?

您好,我有一个问题,我要计算下载我们应用程序的新员工数量和新员工数量。

我试图将两者相除以找出已下载该应用程序的人所占的百分比

但是每当我 运行 我的查询我的结果是 0 datadriver_id 都是 varchar 这是我的查询

SELECT ROUND(COUNT(DATA) / (
            SELECT COUNT(D2.DRIVER_ID)
            FROM DRIVER D2
            WHERE ACTIVE_IN_DISP = 'True'
                AND START_DATE >= '10/1/2015'
            ), 4)
FROM CUSTOM_DATA C
    ,DRIVER D
WHERE CUSTDEF_ID = '50'
    AND SRC_TABLE_KEY = DRIVER_ID
    AND ACTIVE_IN_DISP = 'True'
    AND START_DATE >= '10/1/2015'

提前致谢!

问题是您正在被截断为 INT

在除法之前将您的数据转换为浮点数

SELECT ROUND(  COUNT(DATA) *1.0 /
              (SELECT COUNT(D2.DRIVER_ID)
              ....

只使用条件聚合。更简单,更不容易出错:

SELECT ROUND(AVG(CASE WHEN CUSTDEF_ID = '50' THEN 1.0 ELSE 0
                 END), 4)
FROM CUSTOM_DATA C JOIN
     DRIVER D
     ON SRC_TABLE_KEY = DRIVER_ID
WHERE ACTIVE_IN_DISP = 'True' AND
      START_DATE >= '2015-10-01';

不必使用子查询重复 WHERE 中的逻辑,使得查询更不容易出错。另外,摆脱子查询也可能更快。