[SQLは]彼らTMDいくつかの一般的なデータ分析インタビューの質問を説明します

転載元:https://mp.weixin.qq.com/s/Qg1Bacw5ta9Jnbs6ImqAZw

 

背景

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 levelfrom 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_7from user_login_table) b where b.date is not nulland date_sub(cast(b.date as date,7)) = cast(b.date_7 as date)

 

要約

本論文では、実用的なアプリケーションシナリオウィンドウの機能を理解するための3つのインタビューの質問からのデータの解析は、もちろん、前提は、我々はすでに構文を知っているということである、窓関数窓関数を使用して実際にはもちろん、能力のデータアナリストのSQL習得として測定することができ、どのような使用法のどんなにあなたがこの分析機能を必要とする理由の実用的なアプリケーションの背景の考え方を学ぶ必要があります。

公開された44元の記事 ウォン称賛16 ビュー10000 +

おすすめ

転載: blog.csdn.net/YYIverson/article/details/105078581