ネストされたサブクエリは、ある SELECT 文を別の SELECT 文の内部に埋め込むことで、集約結果に対する集約などの複数ステップの分析を可能にします。
構文
外側の SELECT の FROM 句を使用して、サブクエリを囲みます。
* | SELECT key FROM (sub_query)
重要
-
サブクエリは括弧
()で囲みます。 -
現在の Logstore を照会するには、サブクエリに
FROM log句を含めます。
例
例 1
リクエストメソッドごとにリクエスト数をカウントし、その最小値を求めます。
-
クエリ文
* | SELECT min(PV) FROM ( SELECT count(1) as PV FROM log GROUP BY request_method ) -
クエリと分析の結果
結果は
13です。これは、リクエストメソッドでグループ化した後の最小 PV です。
例 2
現在の時間帯のページビュー (PV) を前日の同じ時間帯の PV と比較します。クエリの時間範囲は [1 時間 (正時)] です。 86400 は 1 日の秒数です。 log は現在の Logstore を指します。
-
クエリ文
* | SELECT diff [1] AS today, diff [2] AS yesterday, diff [3] AS ratio FROM ( SELECT compare(PV, 86400) AS diff FROM ( SELECT count(*) AS PV FROM log ) ) -
クエリと分析の結果
-
[3337.0]:現在の時間帯 (例:2020 年 12 月 25 日 14:00~15:00) の PV です。
-
[3522.0]:前日の同じ時間帯 (例:2020 年 12 月 24 日 14:00~15:00) の PV です。
-
[0.947473026689381]:現在の時間帯の PV の、前日の PV に対する比率です。
-
例 3
ページごとの PV をカウントし、各ページの PV が全体に占める割合を計算します。
-
クエリ文
* | SELECT request_uri AS "Accessed Page", c AS "Count", round(c * 100.0 /(sum(c) over()), 2) AS "Percentage (%)" FROM ( SELECT request_uri AS request_uri, count(*) AS c FROM log GROUP BY request_uri ORDER BY c DESC )