SQL Server 2012を使用して、不明な数の行を反復処理し、日付の差を計算する方法

M.バター

IDごとに2つ以上の日付がある場合、平均日数を計算する必要があります。date1とdate2の間、date2とdate3の間などです。出力は、IDごとの各間隔の間の平均日数である必要があります。IDごとに各日付を繰り返し処理し、日数を平均化するソリューションを探しています

IDで行番号とパーティションを作成することもできますが、実際のデータでは、IDごとに最大20行になる可能性があります。

CREATE TABLE #ATABLE(
ID   INTEGER  NOT NULL  
,DATE DATE  NOT NULL
);
INSERT INTO #ATABLE(ID,DATE) VALUES (1,'1/1/2019');
INSERT INTO #ATABLE(ID,DATE) VALUES (2,'1/1/2019');
INSERT INTO #ATABLE(ID,DATE) VALUES (2,'1/10/2019');
INSERT INTO #ATABLE(ID,DATE) VALUES (2,'1/20/2019');
INSERT INTO #ATABLE(ID,DATE) VALUES (2,'1/30/2019');
INSERT INTO #ATABLE(ID,DATE) VALUES (3,'1/1/2019');
INSERT INTO #ATABLE(ID,DATE) VALUES (3,'1/10/2019');

--get avg days between orders

DROP TABLE #ATABLE

上記の出力は次のようになります。

ID  AvgDatediff
1   Null
2   10
3   9
ムレイニク

を使用lagして前の行(行ごと)を取得し、それと現在の行との差を見つけることができます。次に、それらを平均化できます。

SELECT   id, AVG(diff)
FROM     (SELECT id,
                 DATEDIFF(DAY, date, LAG(date) OVER (PARTITION BY id 
                                                     ORDER BY date DESC)) AS diff
          FROM #atable) t
GROUP BY id;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SQL Serverを使用して、特定の現在の合計条件を満たす既存の演算子と出力行を使用して同様の行を反復処理する方法

分類Dev

SQL Server:複数の要素を反復処理して値を返すXPath

分類Dev

SQL SERVER 2012でOPENROWSETを使用してNULL値を処理する方法は?

分類Dev

SQL Server2012の各日の日付範囲カウントを計算します

分類Dev

SQL Server 2012:同じデータセット内で数式ベースの列を使用して計算列を作成する方法は?

分類Dev

SQL Server:他の2つのテーブルの結果セットを比較しながら、1つのテーブルの行を反復処理します

分類Dev

SQL Server 2012:動的SQLを使用して、発生回数を取得し、期間を計算します

分類Dev

SQL Server2012の計算列を平均として指定します

分類Dev

SQL Server2012で1行を作成して値を合計する方法

分類Dev

SQL Server FOR XMLPATHを使用して複数の行を連結する

分類Dev

集計、結合、および日付範囲の条件を使用してクエリを更新する(SQL Server)

分類Dev

SQL Server 2008のwhileループは、日付範囲を繰り返し処理してからINSERTを実行します。

分類Dev

SQL Server2008でdatetime2形式として2つの日付を減算する方法

分類Dev

SQL Serverで一意のランクを計算する方法(重複なし)?

分類Dev

CTE を介した SQL Server の反復

分類Dev

SQL Server計算列を変数に追加し、それを別の列で使用する方法

分類Dev

SQL Server 2008 R2:複数のCTEを使用して日付ごとのレコードを取得する

分類Dev

SQL Server 2012の異なる行の2つの日付セルの違いを見つける方法は?

分類Dev

ウィンドウ関数を使用して移動合計/平均を計算するときの動的行範囲(SQL Server)

分類Dev

SQL Server2012の日付列をPIVOT

分類Dev

SQL Serverの行からデータを計算する方法は?

分類Dev

SQL Serverで行ごとの比率を計算する方法は?

分類Dev

SQL Server 2012の各行のパーセンテージを計算する方法は?

分類Dev

SQL Serverを使用して、日付が日付範囲の間にあるかどうかを確認します

分類Dev

SQLで行を反復処理し、行を列の合計に設定する方法

分類Dev

ある列を別の列から減算して、SQL Server 2008R2の合計を実行します。

分類Dev

Microsoft SQL Serverで日付のみを使用してDATETIMEフィールドをクエリする方法は?

分類Dev

SQL Server:今日の日付から日付列を差し引いた新しい列を作成します

分類Dev

SQL Server:関数を使用して新しい列を計算します

Related 関連記事

  1. 1

    SQL Serverを使用して、特定の現在の合計条件を満たす既存の演算子と出力行を使用して同様の行を反復処理する方法

  2. 2

    SQL Server:複数の要素を反復処理して値を返すXPath

  3. 3

    SQL SERVER 2012でOPENROWSETを使用してNULL値を処理する方法は?

  4. 4

    SQL Server2012の各日の日付範囲カウントを計算します

  5. 5

    SQL Server 2012:同じデータセット内で数式ベースの列を使用して計算列を作成する方法は?

  6. 6

    SQL Server:他の2つのテーブルの結果セットを比較しながら、1つのテーブルの行を反復処理します

  7. 7

    SQL Server 2012:動的SQLを使用して、発生回数を取得し、期間を計算します

  8. 8

    SQL Server2012の計算列を平均として指定します

  9. 9

    SQL Server2012で1行を作成して値を合計する方法

  10. 10

    SQL Server FOR XMLPATHを使用して複数の行を連結する

  11. 11

    集計、結合、および日付範囲の条件を使用してクエリを更新する(SQL Server)

  12. 12

    SQL Server 2008のwhileループは、日付範囲を繰り返し処理してからINSERTを実行します。

  13. 13

    SQL Server2008でdatetime2形式として2つの日付を減算する方法

  14. 14

    SQL Serverで一意のランクを計算する方法(重複なし)?

  15. 15

    CTE を介した SQL Server の反復

  16. 16

    SQL Server計算列を変数に追加し、それを別の列で使用する方法

  17. 17

    SQL Server 2008 R2:複数のCTEを使用して日付ごとのレコードを取得する

  18. 18

    SQL Server 2012の異なる行の2つの日付セルの違いを見つける方法は?

  19. 19

    ウィンドウ関数を使用して移動合計/平均を計算するときの動的行範囲(SQL Server)

  20. 20

    SQL Server2012の日付列をPIVOT

  21. 21

    SQL Serverの行からデータを計算する方法は?

  22. 22

    SQL Serverで行ごとの比率を計算する方法は?

  23. 23

    SQL Server 2012の各行のパーセンテージを計算する方法は?

  24. 24

    SQL Serverを使用して、日付が日付範囲の間にあるかどうかを確認します

  25. 25

    SQLで行を反復処理し、行を列の合計に設定する方法

  26. 26

    ある列を別の列から減算して、SQL Server 2008R2の合計を実行します。

  27. 27

    Microsoft SQL Serverで日付のみを使用してDATETIMEフィールドをクエリする方法は?

  28. 28

    SQL Server:今日の日付から日付列を差し引いた新しい列を作成します

  29. 29

    SQL Server:関数を使用して新しい列を計算します

ホットタグ

アーカイブ