Как разделить агрегированные значения из одного SQL-выбора на агрегированное значение из другого SQL-выбора? - PullRequest
0 голосов
/ 28 ноября 2018

Я хочу подсчитать, сколько клиентов было связано системой.Рассчитывается в процентах в контексте вопросов, в контексте групп, в контексте программ, в контексте каналов за период.

Формула очень проста:

F = X / Y

Где:

X - number of clients communicated by system.

И

Y - number of clients in analizing sample.

У меня есть таблица базы данных ВЗАИМОДЕЙСТВИЯ.

Пример таблицы:

datetime       | Issue | Group | ProgramID | Channel | CustomerID | Outcome
---------------+-------+-------+-----------+---------+------------+--------
20181126000001 | Sale  | Loans | P-1       | SMS     | 5          | Accept  
20181126000005 | Sale  | Loans | P-1       | PUSH    | 7          | Ignore  
20181126000010 | Sale  | Loans | P-2       | SMS     | 8          | Ignore  
20181126000015 | Sale  | Loans | P-3       | PUSH    | 10         | Accept  

Таким образом, выбор для X:

SELECT 
    ISSUE, GROUP, PROGRAMID, CHANNEL, 
    COUNT(DISTINCT CUSTOMERID) AS Customers 
FROM INTERACTIONS  
GROUP BY ISSUE, GROUP, PROGRAMID, CHANNEL 
ORDER BY 1 ASC, 2 ASC, 3 ASC, 4 ASC;

Выбор для Y:

SELECT COUNT(DISTINCT CUSTOMERID) AS Customers 
FROM INTERACTIONS;

Как объединить эти два SQL-выбора и получить отчет с F = X / Y?

Я хочу получить результат примерно так:

enter image description here

1 Ответ

0 голосов
/ 28 ноября 2018
SELECT 
     ISSUE, GROUP, PROGRAMID, CHANNEL, 
     COUNT(DISTINCT CUSTOMERID)/
    (SELECT COUNT(DISTINCT CUSTOMERID) FROM 
     INTERACTIONS) AS Customers 
FROM INTERACTIONS  
GROUP BY ISSUE, GROUP, PROGRAMID, CHANNEL
ORDER BY 1 ASC, 2 ASC, 3 ASC, 4 ASC 

Просто вам нужно поместить этот Y-запрос в ваш X-запрос

...