I.背景
SQLこのようなカウント、合計、平均、最小、などの集約関数と呼ばれる関数のクラスが存在する maxは、これらの機能は、凝集体は、凝集後のデータ線よりも大きくなる前に構成一行、一般的なデータ行に集約によるデータの複数の行であってもよいです。彼らは、このウィンドウ関数、導入されたときや、時には私たちは、彼らが望むデータを集約した後、集計前にデータを望んでいないハイブ窓関数の要約を。
いくつかのTMDの顔の質問に従うことにより窓関数を使用する方法について説明します。知識はオフセット解析ウィンドウ関数のためのウィンドウ関数のクエリ、ユーザーをグループ化、ソートのための窓関数に関連し、それぞれの意志の顔の質問には、背景のテーマで答えました。
第二に、テキスト
1、トップテイクプラットフォームデータアナリストの面接の質問。User_goods_table既存のトランザクションデータテーブルは次のよう:
-
USER_NAMEユーザー名
-
goods_kindユーザーがお持ち帰りカテゴリを命じました
今、上司はお持ち帰りカテゴリを購入するお持ち帰りカテゴリの優先配分を購入し、各ユーザーを削除するには、すべてのユーザーを知っているしたいです。
次のように出力要件は次のとおりです。
-
USER_NAMEユーザー名
-
持ち帰りカテゴリを購入するほとんどのユーザーをgoods_kind
アイデアは、後で配信するための番号を順位各カテゴリROW_NUMBERユーザ毎に窓関数を用いて決定し、そして最初のカテゴリ、すなわち、ユーザが最も持ち帰りカテゴリを購入ランク取り除きます。
リファレンスソリューション:
select b.user_name,b.goods_kind from
(select
user_name,
goods_kind,
row_number() over(partition by user_name
order by count(goods_kind) desc ) as rank
from user_goods_table) b where b.rank =1
2、主要な決済プラットフォームのデータ分析面接の質問。User_sales_table既存のトランザクションデータテーブルは次のよう:
-
USER_NAMEユーザー名
-
pay_amountユーザーの支払額
今の上司は、前のユーザーが支払った金額の20%を知りたいです。
次のように出力要件は次のとおりです。
- USER_NAMEユーザ名(ユーザの上位10%)
NTILE最初のユーザパケットを取るために、(1/5が存在するように、各グループ)を5つの群に各ユーザに対応する窓関数と支払金額を使用してのアイデアは、ユーザグループ前に前量の、すなわち20%を支払ったランク。(ユーザーではなく、ユーザがトップ20を支払う必要が前に、これは需要の20%であることに注意してください)
リファレンスソリューション:
select b.user_name from
(select
user_name,
ntile(5) over(order by sum(pay_amount) desc) as level
from user_sales_table group by user_name ) b
where b.level = 1
3、トップ小型ビデオプラットフォームデータ解析面接の質問。次のようにユーザのログインテーブルuser_login_table既存:
-
USER_NAMEユーザー名
-
日付、ユーザのログイン時間
今の上司は、行着陸プラットフォームで7日、重要なユーザーを知りたいです。
次のように出力要件は次のとおりです。
- USER_NAMEユーザ名(ユーザの数がログイン行の7日)
オフセット窓関数と考え、第一のリードは、各ユーザのログイン時間シフトバックするための7行毎ランディング時間を取得し、各ユーザー場合、7日毎着弾時間に対する各ユーザのログイン時間遅れを計算しています図7は、ラインが正確にユーザが7日間連続着弾したことを示し、7日間の遅延時間に等しい後方着陸タイムオフセット。
リファレンスソリューション:
select b.user_name
(select user_name,
date,lead(date,7)
over(partition by user_name order by date desc) as date_7
from user_login_table) b
where b.date is not null
and date_sub(cast(b.date as date,7)) = cast(b.date_7 as date)
第三に、要約
本論文では、実用的なアプリケーションシナリオウィンドウの機能を理解するための3つのインタビューの質問からのデータの解析は、もちろん、前提は、我々はすでに構文を知っているということである、窓関数窓関数を使用して実際にはもちろん、能力のデータアナリストのSQL習得として測定することができ、どのような使用法のどんなにあなたがこの分析機能を必要とする理由の実用的なアプリケーションの背景の考え方を学ぶ必要があります。