📣新登場!TiDB Cloud BYOC、TiDB Cloud Filesystem、PostgreSQL-compatible TiDB Cloud Starter がパブリックプレビュー中。このページは自動翻訳されたものです。原文はこちらからご覧ください。

HISTOGRAM



「equal height」バケット戦略を使用してデータ分布のヒストグラムを生成します。

構文

HISTOGRAM(<expr>) -- The following two forms are equivalent: HISTOGRAM(<max_num_buckets>)(<expr>) HISTOGRAM(<expr> [, <max_num_buckets>])
パラメータ説明
exprexpr のデータ型はソート可能である必要があります。
max_num_buckets省略可能な正の整数で、バケットの最大数を指定します。デフォルトは 128 です。

戻り値の型

空文字列、または次の構造を持つ JSON オブジェクトのいずれかを返します。

  • buckets: 詳細情報を含むバケットのリスト:
    • lower: バケットの下限値。
    • upper: バケットの上限値。
    • count: バケット内の要素数。
    • pre_sum: 現在のバケットまでの要素の累積数。
    • ndv: バケット内の異なる値の数。

例

次の例では、HISTOGRAM 関数が histagg テーブル内の c_int 値の分布を分析し、バケットの境界、異なる値の数、要素数、および累積数を返す方法を示します。

CREATE TABLE histagg ( c_id INT, c_tinyint TINYINT, c_smallint SMALLINT, c_int INT ); INSERT INTO histagg VALUES (1, 10, 20, 30), (1, 11, 21, 33), (1, 11, 12, 13), (2, 21, 22, 23), (2, 31, 32, 33), (2, 10, 20, 30); SELECT HISTOGRAM(c_int) FROM histagg; ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ histogram(c_int) │ ├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ [{"lower":"13","upper":"13","ndv":1,"count":1,"pre_sum":0},{"lower":"23","upper":"23","ndv":1,"count":1,"pre_sum":1},{"lower":"30","upper":"30","ndv":1,"count":2,"pre_sum":2},{"lower":"33","upper":"33","ndv":1,"count":2,"pre_sum":4}] │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

結果は JSON 配列として返されます。

[ { "lower": "13", "upper": "13", "ndv": 1, "count": 1, "pre_sum": 0 }, { "lower": "23", "upper": "23", "ndv": 1, "count": 1, "pre_sum": 1 }, { "lower": "30", "upper": "30", "ndv": 1, "count": 2, "pre_sum": 2 }, { "lower": "33", "upper": "33", "ndv": 1, "count": 2, "pre_sum": 4 } ]

次の例では、HISTOGRAM(2) が c_int 値を 2 つのバケットにグループ化する方法を示します。

SELECT HISTOGRAM(2)(c_int) FROM histagg; -- Or SELECT HISTOGRAM(c_int, 2) FROM histagg; ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ histogram(2)(c_int) │ ├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ [{"lower":"13","upper":"30","ndv":3,"count":4,"pre_sum":0},{"lower":"33","upper":"33","ndv":1,"count":2,"pre_sum":4}] │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

結果は JSON 配列として返されます。

[ { "lower": "13", "upper": "30", "ndv": 3, "count": 4, "pre_sum": 0 }, { "lower": "33", "upper": "33", "ndv": 1, "count": 2, "pre_sum": 4 } ]

このページは役に立ちましたか?