繁体   English   中英

如何从两个表中计算百分比?

[英]How to calculate percentage from two tables?

请帮我计算两个表中客户数量的百分比,这些表在 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);

谢谢!

使用 join ,我认为您想根据日期计算总付款百分比

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

更新

计算付款与客户的比率。 我没有看到如何使用 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 和 date 上连接两个表

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.9583
2018-01-02 1.9608
2018-01-05 2.6866

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM