【问题标题】:SQL statistics querySQL统计查询
【发布时间】:2012-08-17 18:32:39
【问题描述】:
我想收集一些统计数据,我想知道是否可以直接通过数据库查询获取一些最小值、最大值和平均值。
在一个过于简单化的情况下,我有这样的事情:
Person | Account
__________________
Person1 | Account1
Person1 | Account2
Person1 | Account3
Person2 | Account4
Person2 | Account5
..................
我想找出一个人拥有的最大、最小和平均帐户数。这可以通过 SQL 查询实现吗?
【问题讨论】:
标签:
sql
database
statistics
【解决方案1】:
select
min(accountcount),
avg(accountcount),
max(accountcount)
from
(
select
person, count(*) as accountcount
from
yourtable
group by person
) v
AVG 将返回平均值,而不是任何其他类型的平均值。
【解决方案2】:
是的,您可以使用aggregate 函数来执行此类操作:
MAX()
MIN()
AVG()
select max(cnt), min(cnt), avg(cnt)
from
(
select person, count(*) cnt
from yourtable
group by person
) x
【解决方案3】:
您必须按人分组,然后对其进行子查询,如下所示:
SELECT MIN(PersonCount), MAX(PersonCount), AVG(PersonCount) FROM
(SELECT Person, COUNT(*) AS PersonCount FROM PersonAccounts GROUP BY Person)