在db2上划分计数?

时间:2015-11-20 18:12:45

标签: sql math count db2 division

你好,我有一个查询,我将拉下已经下载我们的应用程序的新员工的数量和新员工的数量。

我正在尝试将两者分开以找到已下载应用程序的人的百分比

但每当我运行查询时,结果为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'
提前谢谢!

2 个答案:

答案 0 :(得分:1)

问题是你被截断到INT

在分割之前将数据转换为浮动

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

答案 1 :(得分:1)

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

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中的逻辑,使查询更不容易出错。另外,也可以更快地摆脱子查询。