0

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

在过度简化中,我有这样的事情:

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

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

4

3 回答 3

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

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

于 2012-08-22T10:45:11.883 回答
2

是的,您可以使用聚合函数来执行这种类型的操作:

MAX() MIN() AVG()

select max(cnt), min(cnt), avg(cnt)
from
(
    select person, count(*) cnt
    from yourtable
    group by person
) x
于 2012-08-22T10:46:50.553 回答
2

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

SELECT MIN(PersonCount), MAX(PersonCount), AVG(PersonCount) FROM 
(SELECT Person, COUNT(*) AS PersonCount FROM PersonAccounts GROUP BY Person)
于 2012-08-22T10:47:08.060 回答