当前位置: 首页 > 面试题库 >

如何在MySQL中组合聚合函数?

唐阳泽
2023-03-14
问题内容

我只是在学习MySQL-是否有组合(或嵌套)聚合函数的方法?

给定一个查询:

SELECT user, count(answer) FROM surveyValues WHERE study='a1' GROUP BY user;

这将给我每个用户回答的问题数量。我真正想要的是每个用户回答的平均问题数量……

SELECT avg(count(answer)) FROM surveyValues WHERE study='a1';

计算此统计信息的正确方法是什么?

如果有可能,是否有办法针对每个问题分解此统计信息?(用户可以多次回答相同的问题)。就像是:

SELECT avg(count(answer)) FROM surveyValues WHERE study='a1' GROUP BY question;

问题答案:

您必须使用子查询:

  SELECT x.user, 
         AVG(x.cnt)
    FROM (SELECT user, COUNT(answer) AS cnt
            FROM surveyValues 
           WHERE study='a1' 
        GROUP BY user) x
GROUP BY x.user

您不能将一个聚合与另一个聚合一起包装。如果MySQL支持分析/排序/窗口功能,则可以将分析汇总起来。



 类似资料:
  • 问题内容: 我在MySQL上有两个表,我想知道在MySQL上是否有任何聚合函数,如postgreSQL的array_agg()。 表1的属性只有8条记录表2的记录捕获了该属性,因此对于同一属性,有时可以是1或n次,我得到了这个Qry: 如果我使用GROUP BY部分,则会得到以下信息: 丢失了除users_admin_id的第一个值以外的任何其他数据。我知道我可以通过postgreSQL的arra

  • 我不熟悉Mongo中的聚合查询,并且一直在努力产生我想要的输出。我有以下聚合查询: 返回以下结果: 如何修改聚合查询,以便只返回2个文档而不是3个文档?将两个“ABC-123”结果合并为一个结果,并使用带有“bu”和“count”字段的新计数数组,即。 非常感谢

  • 问题内容: 我需要函数,该函数返回字符串列表。 我在表中有这样的数据: 我需要这样的功能(在oracle中类似的功能): 返回如下内容: 有任何想法吗? 问题答案: 您正在寻找GROUP_CONCAT() 尝试这个: 当然,您可以得到结果。

  • 我在读一篇关于OOP中的关系、关联、组合、聚合等的文章。有些事情令人困惑 因此,在PHP中,我们调用以下代码组合 在阅读了几篇关于作文的文章后 以下是组成示例: 因此,根据我的理解,聚合意味着A类的对象可以存在于B类之外,而组合意味着A类生命周期的对象取决于B类。 我正确理解了吗?

  • 我正在探索一种方法来实现这一点,就像下面的SQL一样。 是一个将聚合到

  • 主要内容:1.COUNT函数,2. SUM函数,3. AVG函数,4. MAX函数,5. MIN函数SQL聚合函数用于对表的单个列的多行执行计算,它只返回一个值。它还用于汇总数据。 SQL聚合函数的类型,如下图所示 - 接下来,我们一个个地讲解。 1.COUNT函数 函数用于计算数据库表中的行数,它可以在数字和非数字数据类型上工作。 函数使用返回指定表中所有行的计数。 包函重复值和值。 语法 假设有一个表,它的结构和数据如下所示 - PRODUCT COMPANY QTY RATE COST I