我想收集一些统计信息,我想知道是否可以直接通过数据库查询获取一些最小值,最大值和平均值。
过于简单化我有这样的事情:
Person | Account
__________________
Person1 | Account1
Person1 | Account2
Person1 | Account3
Person2 | Account4
Person2 | Account5
..................
我想查找一个人拥有的最大,最小和平均帐户数。这可能是SQL查询吗?
答案 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)