我尝试收集有关通信深度的一般统计数据:每个请求的每种类型消息的平均、最大和最小数量。有 2 个表:
First:
ticketId,ticketQueueId,ticketCreatedDate
Second:
articleId,articleCreatedDt,articleType (can be IN or OUT - support responses), ticketId
我是这样推理的:
SELECT AVG(COUNT(articleType='IN')) AS AT_IN, AVG(COUNT(articleType='OUT')) AS AT_OUT
FROM tickets.tickets JOIN tickets.articles
ON tickets.ticketId=articles.ticketId;
GROUP BY tickets.ticketId
但它不起作用。
错误代码:1111。组函数的使用无效
答案 0 :(得分:1)
您不能使用嵌套聚合函数(AVG(COUNT())),而是使用适当的子查询并逐渐将聚合函数应用于子查询
还有你对count的使用不当
count 函数计算相关列不为空的每一行,因此在您的情况下,返回 0 或 1 的评估 articleType='IN'(或 articleType='OUT')永远不会为空
select AVG(T_IN), AVG(T_OUT)
from (
SELECT sum(case when articleType='IN' then 1 else 0 END AS T_IN, sum(case when articleType='OUT' then 1 else 0 END AS T_OUT
FROM tickets.tickets
JOIN tickets.articles ON tickets.ticketId=articles.ticketId
GROUP BY tickets.ticketId
) t
(你也有一个错误的分号)