【问题标题】:SQL statistics querySQL统计查询
【发布时间】:2012-08-17 18:32:39
【问题描述】:

我想收集一些统计数据,我想知道是否可以直接通过数据库查询获取一些最小值、最大值和平均值。

在一个过于简单化的情况下,我有这样的事情:

Person  | Account
__________________
Person1 | Account1
Person1 | Account2
Person1 | Account3
Person2 | Account4
Person2 | Account5
..................

我想找出一个人拥有的最大、最小和平均帐户数。这可以通过 SQL 查询实现吗?

【问题讨论】:

    标签: sql database statistics


    【解决方案1】:
    select
        min(accountcount),
        avg(accountcount),
        max(accountcount)
    from
    (
        select 
            person, count(*) as accountcount
        from 
            yourtable
        group by person
    ) v
    

    AVG 将返回平均值,而不是任何其他类型的平均值。

    【讨论】:

      【解决方案2】:

      是的,您可以使用aggregate 函数来执行此类操作:

      MAX() MIN() AVG()

      select max(cnt), min(cnt), avg(cnt)
      from
      (
          select person, count(*) cnt
          from yourtable
          group by person
      ) x
      

      【讨论】:

        【解决方案3】:

        您必须按人分组,然后对其进行子查询,如下所示:

        SELECT MIN(PersonCount), MAX(PersonCount), AVG(PersonCount) FROM 
        (SELECT Person, COUNT(*) AS PersonCount FROM PersonAccounts GROUP BY Person)

        【讨论】:

        • 您需要该子查询的别名 :)
        猜你喜欢
        • 2011-08-01
        • 1970-01-01
        • 2021-07-19
        • 2011-11-12
        • 2011-03-18
        • 2013-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多