mysql - 用于标准化数据的复杂分组功能

标签 mysql

我有一个包含 dstipv4pkts 字段的表。我想计算每个 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/

相关文章:

java - glassfish/payara 服务器的 MySQL 池连接错误

php - 您的系统中缺少请求的 PHP 扩展 ext-mysql *。在 PHP 7.1.7 中

php - 数据库备份的 Cronjob 语法错误

php - base64 解码数组中的 2 个项目并仍然输出 json?

php - 为什么我的网站每次f5(refresh)都是向数据库插入数据

java - JDBCResourceDAO 无法删除 id 的资源 - WSO2 API Manager

java - Hibernate 映射 MySQL SET 类型

php - 如何从mysql表中选择所有数据,其中列是数组或单个,并且我的值与该数组的一项匹配?

mysql - 如何插入/更新相关表?

java - 无法在 mysql DB 中保留 1970 年以下的日期