我需要计算第一季度内客户的百分比,第一季度内BY客户的状态为“可用”。我正在做这样的事情,没有给出正确的结果。
SELECT DISTINCT Customer, COUNT(1) / (select count(1) from table where QUARTER(`Creation_Date`) = 1)
FROM table
WHERE Customer is not null and QUARTER(`Creation_Date`)=1 and `Status` = 'Available'
GROUP BY Customer
我想在第一个内部选择中按``客户''添加分组,即如下所示,但显然返回多个行。
select count(1) / select count(1) from table where QUARTER(
Creation_Date ) = 1 and Customer = 'ABC'
目前其计算方式例如4/225 * 100。
需要使用groupby这样的百分比:
对于每个客户:
X = select count(1) from table where QUARTER(`Creation_Date`) = 1 and Customer = 'X' and Status = 'Available';
Y = select count(1) from table where QUARTER(`Creation_Date`) = 1 and Customer = 'X';
Z = X/Y*100
有人可以指导吗?
最佳答案
我认为您误解了百分比要求的含义。您最有可能需要找到整个集合中“可用”的百分比。为此,您需要计算“可用”的数量并将其除以总数。您需要汇总所有客户,因此不应选择客户。相反,您应该选择季度。总体而言,您的SQL可能看起来像这样:
SELECT
QUARTER(`Creation_Date`) AS "quarter",
SUM(CASE WHEN `Status`='Available' THEN 1 ELSE 0 END) / COUNT(1) AS "pct"
WHERE
Customer is not null and QUARTER(`Creation_Date`)=1
GROUP BY
Customer
(请注意,我没有对其进行测试,因此可能需要进行一些小的修改。)
关于mysql - Mysql用group by子句计算百分比?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46287407/