SQL统计查询

时间:2012-08-22 10:43:27

标签: sql database statistics

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

过于简单化我有这样的事情:

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

我想查找一个人拥有的最大,最小和平均帐户数。这可能是SQL查询吗?

3 个答案:

答案 0 :(得分:6)

select
    min(accountcount),
    avg(accountcount),
    max(accountcount)
from
(
    select 
        person, count(*) as accountcount
    from 
        yourtable
    group by person
) v

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

答案 1 :(得分:2)

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

MAX()   MIN()   AVG()

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

答案 2 :(得分:2)

你必须按人分组然后子查询,如下所示:

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