我需要计算第一季度内客户的百分比,并且状态为“可用”。我正在做类似的事情,但没有给出正确的结果。
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(
创建日期) = 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
(请注意,我没有对其进行测试,因此可能需要进行一些小的修改。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)