我需要计算第一季度内第一季度客户的百分比,并且状态为“可用”。我正在做这样的事情,但没有给出正确的结果。
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
我想在第一个内部选择中添加'Customer'组,即下面的内容,但显然会返回多行。
select count(1) / select count(1) from table where QUARTER(
{CREATION_DATE {1}}
目前正在计算如二百二十五分之四* 100
使用groupby需要这样的百分比:
每个客户:
) = 1
and Customer = 'ABC'
有人可以指导吗?
答案 0 :(得分:1)
我认为你误解了百分比要求意味着什么。您很可能需要在整个集合中找到“可用”的百分比。为此,您需要计算“可用”的数量并将其除以总数。您需要汇总所有客户,因此您不应该选择客户。相反,你应该选择季度。总的来说,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
(请注意,我没有对其进行测试,因此可能需要进行一些小修改。)
答案 1 :(得分:1)
您不需要子选择。您可以统计可用的客户,并将其除以客户总数。如果要将其表示为百分比,则乘以100:
请注意,COUNT
仅计算非空值。或者,您可以使用SUM
,因为COUNT(1)
与SUM(1)
基本相同。
SELECT
COUNT(CASE WHEN `Status` = 'Available' THEN 1 END) / COUNT(1) * 100 AS Percentage
FROM table
WHERE Customer is not null and QUARTER(`Creation_Date`)=1