gpt4 book ai didi

mysql - Count() 返回总数而不是不同计数

转载 作者:行者123 更新时间:2023-11-29 10:57:20 24 4
gpt4 key购买 nike

我有带有描述和创建日期的合格风险,它们附加到风险子类别,最后一个附加到风险类别,每个风险都有一个类似“Risk_1”的名称,我的目标是通过以下方式计算风险数量月份和风险类别,包括零。

我有这个请求:

SELECT DISTINCT risk_names.type as risk_name, MONTH(risk.creation_date) as month, count(risk.id) as number FROM risk As risk , risk_category
JOIN (
SELECT risk_category.name as type
FROM
risk_category
) as risk_names on risk_names.type = risk_category.name
where risk.creation_date >= (NOW()-INTERVAL 3 MONTH) GROUP BY MONTH(risk.creation_date), risk_names.type;

谁返回此结果:

Risk_name          month  number
---------------------------------
Risk_1 1 10 ---> instead 8
Risk_2 1 10 ---> instead 1
Risk_3 1 10 ---> instead 1
Risk_1 2 12 ......
Risk_2 2 12
Risk_3 2 12
Risk_1 12 4
Risk_2 12 4
Risk_3 12 4

正如您所看到的,返回的数字是每个月的总数,但我的目标是获得每个不同风险的总数。你能帮助我吗 。谢谢

最佳答案

FROM 中的逗号正在执行CROSS JOIN。笛卡尔积是不必要的,并且会导致所有计数失效。

我怀疑你想要这样的东西:

SELECT rc.type as risk_name, MONTH(r.creation_date) as month,
count(r.id) as number
FROM risk_category rc LEFT JOIN
risk r
ON r.?? = rc.??
where risk.creation_date >= (NOW()-INTERVAL 3 MONTH)
GROUP BY rc.type, MONTH(r.creation_date);

我不知道 riskrisk_category 之间的 JOIN 标准是什么。

关于mysql - Count() 返回总数而不是不同计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42831745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com