用于规范化数据的复杂分组功能

时间:2014-04-26 19:27:25

标签: mysql

我有一个包含dstipv4pkts字段的表格。我想为每个pkts计算标准化dstipv4的STDEV。我写了这样的查询,但不起作用 - 生成错误:

#1111 - Invalid use of group function

如何撰写正确的查询?

SELECT dstipv4, STDEV((pkts-min(pkts))/(max(pkts)-min(pkts))) FROM flow
group by dstipv4

1 个答案:

答案 0 :(得分:0)

我不确定如何最好地解释它,但是你所显示的计算需要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