0

いくつかの統計を収集したいのですが、DB クエリで最小値、最大値、平均値を直接取得できるかどうか疑問に思っています。

過度に単純化すると、次のようなものがあります。

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

次のように、人ごとにグループ化してからサブクエリを実行する必要があります。

SELECT MIN(PersonCount), MAX(PersonCount), AVG(PersonCount) FROM 
(SELECT Person, COUNT(*) AS PersonCount FROM PersonAccounts GROUP BY Person)
于 2012-08-22T10:47:08.060 に答える
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 に答える