我有一个包含 dstipv4
和 pkts
字段的表。我想计算每个 dstipv4
的归一化 pkts
的 STDEV。我写了一个这样的查询,但不起作用 - 生成错误:
#1111 - Invalid use of group function
如何编写正确的查询?
SELECT dstipv4, STDEV((pkts-min(pkts))/(max(pkts)-min(pkts))) FROM flow
group by dstipv4
最佳答案
我不确定如何最好地解释它,但是所示的计算需要 DBMS 方面的先见之明,而错误消息是 DBMS 告诉您它没有必要的先见之明。
我认为您需要计算子查询中的 MAX 和 MIN 值:
SELECT f.dstipv4, STDEV((f.pkts - m.min_pkts) / (m.max_pkts - m.min_pkts))
FROM flow AS f
JOIN (SELECT dstipv4, MIN(pkts) AS min_pkts, MAX(pkts) AS max_pkts
FROM flow
GROUP BY dstipv4
) AS m
ON f.dstipv4 = m.dstipv4
GROUP BY f.dstipv4
关于mysql - 用于标准化数据的复杂分组功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23315535/