我需要计算第一季度内客户的百分比,第一季度内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/

10-15 13:38