划分两个简单的select语句

时间:2014-09-26 14:57:56

标签: sql oracle

我有两个简单的select语句,只想将第一个语句除以第二个语句。

SELECT COUNT (DISTINCT INITIATIVE_ID) 
FROM GPD_ERROR_WARNING_NEW

SELECT COUNT (DISTINCT SAVINGS_ID)
FROM GPD_SAVINGS_REGULAR

第一个选择语句结果为300 第二个选择语句导致大约1500,所以只是寻找那个魔法.2

我知道手动操作很简单,但希望自动化并使其成为一个视图,因为它需要每小时更新一次。

2 个答案:

答案 0 :(得分:6)

这会有效,但它会让您对“除以零”错误持开放态度:

SELECT
  (SELECT COUNT (DISTINCT INITIATIVE_ID) FROM GPD_ERROR_WARNING_NEW) /
  (SELECT COUNT (DISTINCT SAVINGS_ID) FROM GPD_SAVINGS_REGULAR)
FROM DUAL;

如果第二个(分母)计数为零,这将给出一个空结果而不是错误:

SELECT
  (SELECT COUNT (DISTINCT INITIATIVE_ID) FROM GPD_ERROR_WARNING_NEW) /
  NULLIF((SELECT COUNT (DISTINCT SAVINGS_ID) FROM GPD_SAVINGS_REGULAR), 0)
FROM DUAL;

答案 1 :(得分:0)

您可以这样编写查询(在sql中):

SELECT
(SELECT DISTINCT COUNT(INITIATIVE_ID) FROM GPD_ERROR_WARNING_NEW) /
ISNULL((SELECT DISTINCT COUNT(SAVINGS_ID) FROM GPD_SAVINGS_REGULAR), 0)
FROM DUAL;