SQLで実行中の合計を計算する4つの方法


SQLで実行している合計/圧延合計を計算する有用なスキルを持っている.
それは頻繁に報告するためにもアプリケーションを開発するときに便利になることができます.おそらくあなたのユーザーは、彼らが得ているか、獲得したお金の稼動総計を見たいと思うかもしれません.SQLのほとんどの問題と同様に、複数の方法で解決できます.
解析関数、自己結合、または実行サムを追跡する集約テーブルを使用できます.いくつかの例を見てみましょう.
あなたがむしろビデオ形式でこれらの説明を見たいならば、下へスキップしてください.

解析関数の使用


解析関数を使用すると、実行中の合計を計算する最も簡単な方法です.解析関数を使用すると、特定のフィールドでデータを分割できます.例えば、この場合、DriverLength IDとmonthでローリングサムを打破することができます.これは私たちに顧客と月によって実行合計を与える.それで、毎月0で再び始まるでしょう.
解析関数の使用方法を参照するには、以下のクエリーを参照してください.
--We are assuming a month and year field are in the f_daily rides ----table which is abnormal.
--More likely you would have a datekey and a dimension table for all --your dates. However, we didn't want to add an extra join that ------might complicate the the concept we are explaining
Select
   SUM(Profit) over (partition by driver_id,year,month order by day)
   ,driver_id
   ,day  
FROM f_daily_rides

これは、ドライバがどのように多くの利益を比較するために役に立つかもしれません.いくつかの種類の傾向を見つけて、あなたが悪いドライバーに気がつくか、ドライバーのためにパフォーマンス報告を生成するのに役立つことができるかもしれません.
彼らは簡単に別の日の間にどのくらいの月の特定の日のことを確認するスイッチを切り替えることができます.
しかし、インタビューの分析機能を使用することで、質問をすることができます.それは、あなたの答えが間違っているということではありません.

自己結合の使用



実行中の問題を解決する別のオプションは、自己結合を使用することです.self joinとはテーブルを単独で結合することです.すべての値に対して"="を使用する典型的な結合とは異なり、複数の値に参加します.まず、ドライバーIDと月/年に通常参加し、旅行の日程に参加します.旅行の日付に参加するとき、我々は>=記号を使います.これは、他のテーブルからの日付より大きい1つのテーブルからすべての日付を結合します.
したがって、以下の問い合わせを見ると、この基本構造が見えます.これは解析関数を使用するよりも少しトリッキーです.あなたがあなた自身の上でこれを思い付くことができたならば、大きな仕事!
SELECT
   day
   ,driver_id
   ,SUM(Profit)
FROM
(
   Select
      t1.day
      ,t2.day      
      ,t1.driver_id
      ,t2.Profit
   FROM f_daily_rides t1
   JOIN  f_daily_rides t2
On driver_id =driver_id
And t1.Month = t2.Month
And t1.Year = t2.Year
And t1.day >=t2.day
) t3
Group by day
サブクエリでデータがどのように見えるかは、ここにあります.あなたがT 1に気づくならば.日フィールドには、T 1の日付の繰り返し値があります.日はT 2より大きい.日.これを行うことで、T 1で集計できます.日と実行中の合計を取得します.

SELECT句における副問い合わせの使用


私たちが人々が実行している合計を計算するのを見た最後の方法のうちの1つはSELECT文の副問い合わせを使用することです.SELECT文の中で自己結合が発生するのを除けば、これは自己結合に類似しています.通常、通常、このメソッドを使用すると、クエリを元のテーブルに存在するすべての行に対して再度テーブルをスキャンすることができます.これは非常に非効率的である傾向があります、しかし、我々はすべての可能なオプションの一般的な理解を持つことが常に良いと感じます.

圧延サムを追跡するテーブルの設計


直接アドホッククエリを使用する以外に、別のオプションは、実行中の合計を追跡するテーブルを設計することです.このデザインは目標によって異なるでしょう.可能性以上の目標は、アプリケーションまたはダッシュボードのいずれかを設定することです.要件に基づいて全体的なデザインを変更します.簡単にした場合、上記の例のように、月間ユーザーのローリング合計を持っている場合、同じ月と年の場合、以前の値を追加する新しい行を挿入する必要があります.
--For simplicity we are not going to focus on the month and year
Select
      t1.day
      ,t1.driver_id
      ,(Select sum(profit) from f_daily_rides t2 where t1.day    >=t2.day and t1.driver_id = t2.driver_id)
   FROM f_daily_rides t1
これはダイナミックであることがどれほど簡単かを制限します.たとえば、どのような場合は、3ヶ月ごとに実行している合計を見たいと思うか?
任意のアイデア?ここでは、これらの例を越えるビデオです!

私たちは問題解決シリーズに焦点を当てていると解決するためにしようとしているか、または解決を参照してくださいしたい問題を知るのが大好きだ.あなたが何かを持っているならば、今日、手を伸ばしてください!
あなたがソフトウェア工学についてこのビデオを楽しむならば、同様にこれらのビデオも考慮してください!
The Advantages Healthcare Providers Have In Healthcare Analytics
142 Resources for Mastering Coding Interviews
Learning Data Science: Our Top 25 Data Science Courses
The Best And Only Python Tutorial You Will Ever Need To Watch
4 Must Have Skills For Data Scientists
What Is A Data Scientist