Подсчитать все и подсчитать записи, которые встречают предложение в одном запросе - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть таблица, которая выглядит так:

ID | NetAmount | PaymentAmount
1    2.99        1.99
2    2.99        2.99

Я хочу подсчитать все записи в таблице и затем разделить это число на количество записей, где NetAmount-PaymentAmount> 0. Как мне этого добиться?

(результат в этом случае будет 1/2 => 0,5)

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Вы можете использовать условное агрегирование:

SELECT 1.0 *
       COUNT(*) /
       COUNT(CASE WHEN NetAmount > PaymentAmount THEN 1 END)
FROM yourdata

Часть 1.0 * обеспечит получение десятичного результата с 1 цифрой после 0.

0 голосов
/ 14 ноября 2018

Использование IIF условие:

SELECT AVG(IIF(NetAmount > PaymentAmount, 1.0, 0.0)) as Result
FROM tableName;
0 голосов
/ 14 ноября 2018

Самый простой способ использует avg():

select avg(case when netamount > paymentamount then 1.0 else 0.0 end) as ratio
from t;
...