サーチ…


単純な統計情報:min()、max()、avg()

表の列の値の単純な統計を調べるには、集計関数を使用します。

あなたのindividualsテーブルが:

年齢
アリー 17
アマンダ 14
アラナ 20

この文を書くと、最小値、最大値、平均値を得ることができます:

SELECT min(age), max(age), avg(age)
FROM individuals;

結果:

最大平均
14 20 17

string_agg(式、区切り文字)

string_agg()関数を使用して、区切り文字で区切られた文字列を連結することができます。

あなたのindividualsテーブルが:

年齢
アリー 15 米国
アマンダ 14 米国
アラナ 20 ロシア

SELECT ... GROUP BY文を書くと、各国の名前を取得できます。

SELECT string_agg(name, ', ') AS names, country 
FROM individuals 
GROUP BY country;

string_agg()は集約関数であるため、 GROUP BY句を使用する必要があることに注意してください。

結果:

名前
アリー、アマンダ米国
アラナロシア

PostgreSQL集約関数の詳細はこちら

regr_slope(Y、X):(X、Y)のペアで決まる最小二乗適合線形方程式の傾き

regr_slope(Y、X)の使い方を説明するために、実際の問題に適用しました。 Javaでは、メモリを適切にクリーンアップしないと、ゴミがスタックしてメモリをいっぱいにすることがあります。さまざまなクラスのメモリ使用率について毎時統計をダンプし、分析のためにpostgresデータベースにロードします。

すべてのメモリリーク候補は、より多くの時間が経過するにつれてより多くのメモリを消費する傾向があります。このトレンドをプロットすると、ラインが左上に向かっていると想像できます。

    ^
    |
s   |  Legend:
i   |  *  - data point
z   |  -- - trend
e   |
(   |
b   |                 *
y   |                     --
t   |                  --
e   |             * --    *
s   |           --
)   |       *--      *
    |     --    *
    |  -- *
   --------------------------------------->
                      time

ヒープ・ダンプ・ヒストグラム・データ(消費するメモリー量に対するクラスのマッピング)を含む表があるとします。

CREATE TABLE heap_histogram (
    -- when the heap histogram was taken
    histwhen timestamp without time zone NOT NULL, 
    -- the object type bytes are referring to
    -- ex: java.util.String
    class character varying NOT NULL,
    -- the size in bytes used by the above class
    bytes integer NOT NULL
);

各クラスの勾配を計算するには、クラスごとにグループ化します。 HAVING句>が0の場合、正のスロープ(行が上になり、左に移動する)の候補のみが取得されます。私たちは勾配を降順で並べ替えて、最上位のメモリ増加率でクラスを取得します。

-- epoch returns seconds
SELECT class, REGR_SLOPE(bytes,extract(epoch from histwhen)) as slope
    FROM public.heap_histogram
    GROUP BY class
    HAVING REGR_SLOPE(bytes,extract(epoch from histwhen)) > 0
    ORDER BY slope DESC ;

出力:

         class             |        slope         
---------------------------+----------------------
 java.util.ArrayList       |     71.7993806279174
 java.util.HashMap         |     49.0324576155785
 java.lang.String          |     31.7770770326123
 joe.schmoe.BusinessObject |     23.2036817108056
 java.lang.ThreadLocal     |     20.9013528767851

出力から、java.util.ArrayListのメモリ消費量は、71.799バイト/秒で最速に増加しており、潜在的にメモリリークの一部であることがわかります。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow