|
|
发表于 2024-1-19 21:50:41
|
显示全部楼层
非常抱歉,我之前的回答有误导。造成每一条数据都多出一条count_distinct和count_total均为0的数据的原因是在计算百分比时使用了错误的方法。
为了正确计算百分比,您可以将查询结果作为子查询,然后在外部查询中计算百分比。以下是修改后的示例代码:
SELECT
subquery.name,
subquery.org_name,
subquery.billtypename,
subquery.count_distinct,
subquery.count_total,
CASE
WHEN subquery.count_total = 0 THEN NULL
ELSE (subquery.count_distinct / subquery.count_total) * 100
END AS percentage
FROM
(
SELECT
d.name AS name,
org.name AS org_name,
c.BILLTYPENAME AS billtypename,
COUNT(DISTINCT a.billno) AS count_distinct,
COUNT(a.billno) AS count_total
FROM
ncc.ssctp_flowpath a
LEFT JOIN ncc.bd_billtype c ON c.pk_billtypeid = a.pk_tradetype
LEFT JOIN ncc.ssctp_workinggroup d ON d.pk_workinggroup = a.pk_sscgroup
LEFT JOIN ncc.org_orgs org ON org.pk_org = a.pk_org
WHERE
a.operatetime >= '2023-01-01 00:00:00'
GROUP BY
d.name, org.name, c.BILLTYPENAME
) AS subquery;
以上代码中,我们首先对查询结果进行了聚合,得到了每个组合的count_distinct和count_total。然后在外部查询中,我们使用CASE语句来处理除数为0的情况,将百分比设置为NULL。这样,您将得到正确的结果,并避免了每一条数据都多出一条count_distinct和count_total均为0的数据的问题。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|