2012-08-22 96 views
0

我想收集一些统计数据,我不知道是否可以通过DB查询需要一定的最小值,最大值和平均值直接。SQL查询统计

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

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

我想找到的最大,最小和账户一个人的平均数。这可能与SQL查询?

回答

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

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

+0

+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

你被人必须组,然后子查询,像这样:

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

您需要该子查询的别名:) – podiluska