こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

SQLのCASE文の書き方がわからない

あるサービスの閲覧履歴のテーブルがあります。
カラムは
閲覧日時(yyyy/mm/dd hh:mm:ss)、 会員ID、 コンテンツID、 パーティション(yyyy-mm-dd)

上記の様になっています。

コンテンツIDは4桁+5桁の組み合わせになっ

ていて、
前の4桁はジャンル(占い、グルメ、ファッションなど)になっています。

パーティションは日毎にあります。
このテーブルから
週毎にそれぞれのジャンルをどれくらい閲覧したのか集計したいです。
やりたいアウトプットのイメージは下記のようなものです

10/06~10/12 10/13~10/19 10/20~10/26
ジャンルA 200 400 300
ジャンルB 300 200 200

1日に同じ会員IDが複数回見た場合に「1回」とカウントする場合と「複数回」とカウントする2パターンを考えています。

週毎の一つ一つのコンテンツを集計することは調べてできるようになったのですが
まとめて集計する方法がうまくできず困っています。

前任者からうまく引き継ぎができなかったことと、社員に質問して答えてくれそうな人がいないため困っています。

hiveSQL
というのを使っています。

クロス集計をするにはCASE文というのを書けば良いことはわかって、
ネットに出ている例を当てはめて見ようとしたのですが、
うまくできません。

やり方を教えていただけないでしょうか。

SQLだけでやる方法でも、エクセルのピボットテーブルと組み合わせるようなやり方でも教えていただけると助かります。

よろしくお願いいたします。

投稿日時 - 2019-11-11 00:07:52

QNo.9677558

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.2

HiveSQLですか。Hadoopですね。
Sqlの知識はありますが、hadoopは触ったことがないので、直接の回答は控えます。

助言としては、撤退を意識してください。
その製品に対してスキル不足で、学ぶ相手も手段もないのであれば、
質問者さんがその現場に居座っても、顧客のプラスにならず、最悪の場合は
プロジェクト遅延で損害も出しかねませんので、傷が広がらないうちに撤退
すべきだと思います。

誰が今の現場に質問者さんを放り込んだかそ知りませんが、あきらかにスキルの
ミスマッチです。早急に上司に報告すべきでしょう。

投稿日時 - 2019-11-11 14:30:40

ANo.1

複数回

「日」と「週」を管理するテーブルを作成し、閲覧履歴テーブルとJOINする。ジャンル別にGROUPBYしてcountでも取ればよろしい。

1回

ほぼ同様で、distinctしたものをcountでもすればよろしい。

>>2パターンを考えています。

別のSQLにすればよいのでは?

>>クロス集計をするにはCASE文というのを書けば良いことはわかって、

逆に、case文をどう使えばいいのかちょっと悩んでます。

投稿日時 - 2019-11-11 09:50:27

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-