dポイントプレゼントキャンペーン実施中!

◆私のスキル

主に営業を担当してて、
データ抽出作業はマニュアルを見ながらやっとできるレベルです。
HIVEQLというのを使っています

◆状況
一日単位の会員の閲覧履歴が入ったテーブルがあります。
そこから
ユーザー、閲覧したコンテンツ、そのコンテンツを最初に閲覧した日時
というところまで作ることができたのですが

Aさん、コンテンツB 1月1日 12:20
Aさん、コンテンツC 1月3日 14:30
Aさん コンテンツD 1月3日 13:30
Dさん コンテンツB 1月6日 14:50
Dさん コンテンツC 1月4日 15:30
Eさん コンテンツD 1月4月 12:00

それぞれのユーザーの中で特定のコンテンツを
他のコンテンツの中で一番先に選んだ人の数をカウントしたいです。

※コンテンツAをすべてのコンテンツの中で一番先に閲覧したユーザーの人数を知りたい

テーブルはこのような形式です。
会員ID(文字) 日時(文字yyyy/mm/dd hh:mm:ss) 閲覧コンテンツID(文字) 

●一度目は
上記の
Aさん、コンテンツB 1月1日 12:20
・・・

のところまでSQLで作りその後CSVで出力し
その後エクセルで並び替えたり、順位をつける関数を使ってやれたのですが、
次にやったときは
データ量が100000行を超えた場合に私が使っている環境ではできなくなってしまいました。

知りたいのは、該当ユーザーの数です、

やり方をご存じの方がいらっしゃったら
教えて下さい

A 回答 (1件)

> のところまでSQLで作りその後CSVで出力し


→ CSVではなく、副クエリにする
あるいは、新規テーブルとして保存する

> 並び替えたり、順位をつける関数
→マニュアルをよく読む。特に「ウィンドウ関数」
→必要なら、その順位を付けた内容で副クエリが新テーブルにする

でできるかと。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す