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

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

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

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

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

Q&A

解決済

1回答

759閲覧

一つ後ろのデータの値を取得する方法を知りたい

aiueo122

総合スコア7

BigQuery

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

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

0グッド

0クリップ

投稿2021/12/22 02:24

編集2021/12/22 08:44

SPでの購入率が高いため、施策によってSPでの購入が増えたか確認したいです。
下記のようなデータがあった場合、日別でPCを使っていたユーザーがどれくらいSPへ転換したか確認したいです。
一つ後以降のデータを取得する方法、SPという特定の値が入った場合どのようにフラグをつけるのか
わかっていないので教えていただきたいです。

もし不明な点があればコメントを頂けると嬉しいです。
Bigquery を使用しておりますが、SQLも近しい言語なのでタグを付けさせていただいております。
よろしくお願い致します。

データイメージ

userID購入日購入端末
aaaa2021-12-01PC
aaaa2021-12-02SP
aaaa2021-12-03SP
aaaa2021-12-03PC
bbbb2021-12-02PC
bbbb2021-12-03PC
bbbb2021-12-04SP

ほしいアウトプット

|購入日|PC購入数|2021-12-01|2021-12-02|2021-12-03|2021-12-04|
|:--|:--:|:--:|:--:|--:|
|2021-12-01|1|1|1|1|0|
|2021-12-02|1|0|0|0|1|

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

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

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

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

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

neko_the_shadow

2021/12/22 03:38

①「ほしいアウトプット」の縦軸はユーザIDですか? ② userID=aaaa、購入日=2021-12-03のように同じ日に購入端末がPCとSPになっているものはどのように処理しますか?
YT0014

2021/12/22 03:58

タグ「データベーススペシャリスト」は該当の資格の為のタグなので、削除されることをお勧めします。 同じくタグ「データマイニング」も関連が薄いと思われるので、削除が妥当と思われます。 併せてタグ「データ構造」は、DBから取得したデータの管理方法の為のタグなので、こちらも削除を。
aiueo122

2021/12/22 04:01

タグを削除いたしました。
aiueo122

2021/12/22 04:18

>neko_the_shadow様 ご確認ありがとうございます! ① 「ほしいアウトプット」の縦軸はユーザIDですか? セル内の数字はユーザーIDです ② userID=aaaa、購入日=2021-12-03のように同じ日に購入端末がPCとSPになっているものはどのように処理しますか?  →SPを使っているのでSPにカウントしたいです。
guest

回答1

0

ベストアンサー

  1. useridごとにPCで最初に購入した日を求める
  2. PCで最初に購入した日以降にSPで購入した日をuseridごとに求める
  3. ピボットテーブル形式で表示する

やりたいことは↑であっていますか? あっているなら、たとえば以下のようなSQLで実現できると思います。

SQL

1SELECT 2 T1.PC購入日, 3 COUNT(CASE WHEN T2.購入日 = '2021-12-01' THEN T1.userid END) AS "2021-12-01", 4 COUNT(CASE WHEN T2.購入日 = '2021-12-02' THEN T1.userid END) AS "2021-12-02", 5 COUNT(CASE WHEN T2.購入日 = '2021-12-03' THEN T1.userid END) AS "2021-12-03", 6 COUNT(CASE WHEN T2.購入日 = '2021-12-04' THEN T1.userid END) AS "2021-12-04" 7FROM ( 8 SELECT userid, MIN(購入日) AS PC購入日 9 FROM tbl 10 WHERE 購入端末 = 'PC' 11 GROUP BY userid 12) AS T1 13JOIN tbl AS T2 ON T1.userid = T2.userid AND T1.PC購入日 < T2.購入日 14WHERE T2.購入端末 = 'SP' 15GROUP BY T1.PC購入日

2021/12/23 10:20 追記

「その日に使われたPC経由の注文数」
「列の12月1日〜12月7日」
をいれる方法はありますでしょうか?

やり方はいろいろあると思いますが、たとえば以下のようなSQLはどうでしょうか?

SQL

1SELECT 2 T1.PC購入日, 3 (SELECT COUNT(*) FROM tbl T3 WHERE T1.PC購入日 = T3.購入日 AND 購入端末 = 'PC') AS PC購入数, 4 COUNT(CASE WHEN T2.購入日 = '2021-12-01' THEN T1.userid END) AS "2021-12-01", 5 COUNT(CASE WHEN T2.購入日 = '2021-12-02' THEN T1.userid END) AS "2021-12-02", 6 COUNT(CASE WHEN T2.購入日 = '2021-12-03' THEN T1.userid END) AS "2021-12-03", 7 COUNT(CASE WHEN T2.購入日 = '2021-12-04' THEN T1.userid END) AS "2021-12-04", 8 COUNT(CASE WHEN T2.購入日 = '2021-12-05' THEN T1.userid END) AS "2021-12-05", 9 COUNT(CASE WHEN T2.購入日 = '2021-12-06' THEN T1.userid END) AS "2021-12-06", 10 COUNT(CASE WHEN T2.購入日 = '2021-12-07' THEN T1.userid END) AS "2021-12-07" 11FROM ( 12 SELECT userid, MIN(購入日) AS PC購入日 13 FROM tbl 14 WHERE 購入端末 = 'PC' 15 GROUP BY userid 16) AS T1 17JOIN tbl AS T2 ON T1.userid = T2.userid AND T1.PC購入日 < T2.購入日 18WHERE T2.購入端末 = 'SP' 19GROUP BY T1.PC購入日

投稿2021/12/22 05:17

編集2021/12/23 01:25
neko_the_shadow

総合スコア2349

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

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

aiueo122

2021/12/22 08:41

ありがとうございます。 できました。 ちなみにこの結果の左側のカラムに 「その日に使われたPC経由の注文数」 「列の12月1日〜12月7日」 をいれる方法はありますでしょうか? 質問も修正致します。
neko_the_shadow

2021/12/22 19:22

「その日に使われたPC経由の注文数」というのは、PCで購入するのが初めてではない場合もカウントしますか? たとえばユーザccccがいて、2021-12-01と2021-12-02にPCで購入していたとします。このとき2021-12-02のPCでの購入は「その日に使われたPC経由の注文数」にカウントしますか?
aiueo122

2021/12/23 00:08

カウントします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問