2012-08-22 95 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