Рассчитать процент от подсчета двух таблиц - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть следующее, которое возвращает счет из двух таблиц

USE CBA

SELECT
    COUNT(DISTINCT dat.CoAc) AS Count1
FROM
    (SELECT *
     FROM IR20181125
     WHERE pdate NOT IN ('NULL','')) dat

SELECT
    COUNT(DISTINCT CoAc) As Count2
FROM 
    IPR20181125

Мне нужно вычислить процент так (Count1 * 100) / Count2, но я не уверен в синтаксисе, чтобы сделать это.

Редактировать - мне нужен правильный ответ с точностью до 2 знаков после запятой.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018
select (
 Select (COUNT(DISTINCT dat.CoAc) * 100) AS Count1 /*count1 * 100*/
 From(
  Select *
  From IR20181125
  where pdate not in ('NULL','')
 ) dat
) / (
 Select COUNT(DISTINCT CoAc) As Count2
 From IPR20181125
) CountPercentage

Дайте мне знать, что вы получили.

Обновление 1

select (
 Select convert (decimal (18,2), (COUNT(DISTINCT dat.CoAc) * 100)) AS Count1 
 From(
  Select *
  From IR20181125
  where pdate not in ('NULL','')
 ) dat
) / (
 Select convert (decimal (18,2), COUNT(DISTINCT CoAc)) As Count2
 From IPR20181125
) CountPercentage
0 голосов
/ 03 декабря 2018

Вам не нужны отдельные выборки, чтобы получить эти значения.Вы можете получить их сразу:

Select
    COUNT(DISTINCT case when pdate not in ('NULL','') then CoAc else NULL end) As Count1
    , COUNT(DISTINCT CoAc) As Count2
From IR20181125

Следовательно, вы можете рассчитать процент напрямую:

Select COUNT(DISTINCT case when pdate not in ('NULL','') then CoAc else NULL end) * 100.0 / COUNT(DISTINCT CoAc)
From IR20181125

В случае, если ваш счет исходит из разных таблиц, вы можете использовать подзапросы длярассчитать как количество, так и один выбор без от, чтобы рассчитать процент:

select 
    100.0 * (
        Select COUNT(DISTINCT CoAc) as Cnt
        From IR20181125
        where pdate not in ('NULL','')
    ) / (
        select COUNT(DISTINCT CoAc) as Cnt
        from SecondTable
    )
...