質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
BigQuery

BigQueryは、Google Cloud Platformが提供しているビッグデータ解析サービス。数TB(テラバイト)またはPB(ペタバイト)の膨大なデータに対し、SQL風のクエリを実行し、高速で集計・分析を行うサービスです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

856閲覧

最大値の平均を取得するクエリ

MeMeMeMeMeMe

総合スコア5

BigQuery

BigQueryは、Google Cloud Platformが提供しているビッグデータ解析サービス。数TB(テラバイト)またはPB(ペタバイト)の膨大なデータに対し、SQL風のクエリを実行し、高速で集計・分析を行うサービスです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2021/10/11 04:38

前提・実現したいこと

session_idのスクロール深度から最大値を取得し、URLごとにスクロール深度の平均を取得する。
以下のDBが合った場合に、
//aaa.html:30と20の平均
/
/bbb.html:20と40の平均
を出せるようにしたいです。

|timestamp|url|session_id|scroll_depth|
|:--|:--:|--:|
|2021-01-01|//aaa.html|abcde|10|
|2021-01-01|/
/aaa.html|abcde|20|
|2021-01-01|//aaa.html|abcde|30|
|2021-01-01|/
/aaa.html|12345|10|
|2021-01-01|//aaa.html|12345|20|
|2021-01-01|/
/bbb.html|fghij|10|
|2021-01-01|//bbb.html|fghij|20|
|2021-01-01|/
/bbb.html|klmno|10|
|2021-01-01|//bbb.html|klmno|20|
|2021-01-01|/
/bbb.html|klmno|30|
|2021-01-01|/***/bbb.html|klmno|40|

試したこと

session_idごとにscroll_depthの最大値を取得するクエリを書いたのですが、ここからdate/url/scroll_depthの平均を出すクエリにたどり着けずにいます。

BigQuery

1select 2 FORMAT_TIMESTAMP("%Y-%m-%d", timestamp, "Asia/Tokyo") AS date, 3 url, 4 session_id, 5 max(scroll_depth) as scroll_depth 6FROM DB名 7group by date, session_id,url

ご教授のほどよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2021/10/11 04:51

group byが、「session_idのスクロール深度から最大値」では、(date, session_id,url)ですが、「URLごとにスクロール深度の平均」は、(date,url)になるかと思います。 それを一度に取得すると、(date, session_id,url)に合わせるしかありませんけど、どのようなselectの結果にしたいのですか?
sazi

2021/10/11 05:14

質問では、それぞれを求めたいという事ではありませんでしたね。
guest

回答1

0

ベストアンサー

集計の単位が違うものは別々に集計するしかありません。

SQL

1select date, url, avg(scroll_depth) as scroll_depth 2from ( 3 select FORMAT_TIMESTAMP("%Y-%m-%d", timestamp, "Asia/Tokyo") AS date 4 , url 5 , session_id 6 , max(scroll_depth) as scroll_depth 7 FROM DB名 8 group by date, url, session_id 9) session_Max 10group by date, url

投稿2021/10/11 05:02

編集2021/10/11 05:13
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MeMeMeMeMeMe

2021/10/11 07:08

こちらの回答がドンピシャで得たいものでした。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問