В ответ на мой вопрос -sql-table, я добавил столбец RATIO, который представляет собой просто один столбец SUM(...), разделенный на второй столбец SUM(...):
SELECT
COMPANY_ID,
SUM(CASE WHEN STATUS IN (0, 1) THEN 1 ELSE 0 END) AS NON_BILLABLE,
SUM(CASE WHEN STATUS IN (2, 3) THEN 1 ELSE 0 END) AS BILLABLE
SUM(NON_BILLABLE)/SUM(BILLABLE) AS RATIO
FROM TRANSACTIONS
GROUP BY COMPANY_ID
Это выглядит красиво и чисто, чтобы определить RATIO таким образом, но также очевидно запрещено SQL.
Чтобы заставить запрос работать, я просто скопировал операторы CASE для NON_BILLABLE и BILLABLE.
SELECT
COMPANY_ID,
SUM(CASE WHEN STATUS IN (0, 1) THEN 1 ELSE 0 END) AS NON_BILLABLE,
SUM(CASE WHEN STATUS IN (2, 3) THEN 1 ELSE 0 END) AS BILLABLE
SUM(CASE WHEN STATUS IN (0, 1) THEN 1 ELSE 0 END)/SUM(CASE WHEN STATUS IN (2, 3) THEN 1 ELSE 0 END) AS RATIO
FROM TRANSACTIONS
GROUP BY COMPANY_ID
Есть ли лучший, более чистый (не избыточный) способ написать этот запрос?
NON_BILLABLE
иBILLABLE
) внутри предложения select вашего запроса. Вы можете ссылаться на них только в предложениях WHERE или HAVING. Вы возможно сможете настроить его с помощью левого соединения или чего-то еще, но я не уверен. - person keithjgrant   schedule 24.11.2009