【问题标题】:Average after group by in SQL querySQL查询中分组后的平均值
【发布时间】:2023-03-17 01:53:01
【问题描述】:
select avg(select count(aid)
           from athlete
           group by codepays)

我收到“多行错误”。 如何从我的第一个选择中获取结果的平均值?

【问题讨论】:

    标签: mysql sql h2


    【解决方案1】:

    您需要使用表表达式(子查询)。

    例如:

    select avg(cnt)
    from (
      select count(aid) as cnt
      from athlete
      group by codepays
    ) x
    

    【讨论】:

    • 感谢任何解释为什么我的查询不起作用?
    • AVG() 等聚合函数的参数是列或标量表达式,而不是查询。您的语法理论上可能有用,但它不是 SQL 标准的一部分(或它的扩展)。
    【解决方案2】:

    您可以使用除法来做到这一点:

    select count(aid) / count(distinct codepay)
    from athlete;
    

    不需要子查询。

    (尽管如果codepay 实际上可以是NULL,则需要调整算术。)

    【讨论】:

    • 谢谢,我知道,但我被要求使用 group by
    • 有点奇怪。这是获得所需结果的最简单方法。
    猜你喜欢
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    • 2021-02-27
    相关资源
    最近更新 更多