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

, пожалуйста, помогите мне рассчитать процентное соотношение количества клиентов из двух таблиц, которые осуществили платежи в период с 01.01.2018 по 05.01.2018.

clients

client_id  sum     date
100      2400   01.01.2018
101      2550   02.01.2018
120      2345   05.01.2018
155      5526   30.03.2018

второй стол

payments 

client_id   total  date
100        47    01.01.2018
101        50    02.01.2018
120        0    05.01.2018
155        20    30.03.2018

Я пишу такой запрос, но он не работает правильно:

SELECT (COUNT(distinct payments.client_id) / (COUNT(distinct 
clients.client_id)) * 100) AS percent, payments.date 
FROM payments, clients WHERE
payments.date between '2018-01-01' 
and '2018-01-05' 
GROUP BY
(payments.date);

Спасибо!

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Обновление

Для подсчета рациона платежей против клиентов. Я не видел, как это можно сделать с помощью JOIN.

SELECT 100 * COUNT(DISTINCT p.id) / (SELECT COUNT(*)
                                     FROM clients 
                                     WHERE date between '2018-01-01' and '2018-01-31') as 'Percent' 
FROM Payments p
WHERE p.date between '2018-01-01' and '2018-01-31'

Рассчитать сумму для каждой таблицы. Соедините две таблицы по client_id и дате

.
SELECT 100 * SUM(p.total) / SUM(c.sum) as 'Percent'
FROM Payments p
JOIN clients c ON p.client_id = c.client_id AND p.date = c.date
WHERE p.date between '2018-01-01' and '2018-01-05'

Процент
2,1933

Добавить GROUP BY, если вы хотите на дату

SELECT p.date as 'Date', 100 * SUM(p.total) / SUM(c.sum) as 'Percent'
FROM Payments p
JOIN clients c ON p.client_id = c.client_id AND p.date = c.date
WHERE p.date between '2018-01-01' and '2018-01-05' 
GROUP BY p.date

Дата в процентах
2018-01-01 1,9953
2018-01-02 1.9608
2018-01-05 2,6866

0 голосов
/ 31 августа 2018

используйте объединение, и я думаю, что вы хотите рассчитать общий процент платежей в соответствии с датой

SELECT p.date ,
( sum(p.total) /sum(c.sum)) * 100.00) AS percent
FROM payments p join  clients  c on p.client_id=c.client_id
WHERE
p.date between '2018-01-01' 
and '2018-01-05' 
GROUP BY
p.date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...