SQLで重複する異なるレコードを計算せずに、テーブルのレコードから分数の合計を取得します

ラムシン

テーブルから2つの日付の間の分数の合計を重複せずに計算したい(テーブルデータの後に以下で説明)**

**Id**        **timeStart**            **timeEnd**          **ReaderId**
3          2019-04-11 21:50:00.00   2019-04-11 22:00:00.00       24 
4          2019-04-11 22:30:00.00   2019-04-11 22:35:00.00       24 
5          2019-04-11 22:31:00.00   2019-04-11 22:33:00.00       22 
6          2019-04-11 21:40:00.00   2019-04-11 21:55:00.00       22 

**上記のデータでわかるように、2つのリーダーがあり、すべてのレコードから合計分を取得したいと思います。たとえば、3行と6行の場合、6番目のIDでは21:40から始まり、21:55に終わり、3番目のIDでは21:50から22:00になります。したがって、21:40から22:00の間にのみカウントする必要があるため、出力は20分になります。これらの2倍をカウントしないでください(21:40-21:55)= 15 +(21:50-22:00)= 10 = 25。重複する分を1回カウントする必要があります

どうすればこれができるのかわかりません。私は2つの日付の間の時間を取得することを以下で知っていますが、重複するポイントをどのように克服できるかわかりません。

(datediff(minute, @dt_start, @dt_end))

更新:

上記の表のデータから:以下に説明するように、25分が出力になります:元のデータ

21:50 - 22:00
22:30 - 22:35
22:31 - 22:33
21:40 - 21:55

もう少し理解しやすいように再配置:

21:40 - 21:55
21:50 - 22:00 
22:30 - 22:35
22:31 - 22:33

最初の2行では、時間は21:40から始まり、最大終了時間は22:00であるため、出力は20 + 5(最後の2行から)= 25分になります。

ラムシン

私はそれを以下のクエリで動作させるようにしました:

Declare @Terms table (Start DATETIME, Finish DATETIME)
INSERT INTO @Terms values
('2019-04-11 21:50:00.00','2019-04-11 22:00:00.00'),
('2019-04-11 22:30:00.00','2019-04-11 22:35:00.00'),
('2019-04-11 22:31:00.00','2019-04-11 22:33:00.00'),   -- overlapping term
('2019-04-11 21:40:00.00','2019-04-11 21:55:00.00')

Select Minutes = sum(Minutes) From (
    Select Distinct 
           B.DateR1
          ,B.DateR2
          ,Minutes = DateDiff(Minute,B.DateR1,B.DateR2)
     From @Terms A
     Cross Apply (
                  Select DateR1=Min(Start)
                        ,DateR2=max(Finish) 
                   From  @Terms 
                   Where Start <= A.Finish and Finish >= A.Start
                 ) B
 ) A

ハッピーコーディング

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

同じテーブルのレコードを比較し、異なる日付での差を計算します

分類Dev

ループmysqlphpを使用せずに、大きなテーブルから異なる識別子を持つ複数のレコードを削除します

分類Dev

SQL-別のテーブルで結合して1つのテーブルから重複レコードを取得する方法

分類Dev

jqueryを使用してテーブルレコードの合計量を計算するにはどうすればよいですか?

分類Dev

postgresqlを使用して、複数のレコードにわたる2つのタイムスタンプ間の合計分数を計算します

分類Dev

異なるテーブルからレコードを取得し、SQLで重複した日付を無視する方法は?

分類Dev

2番目のテーブルから3列と複数のレコードの合計合計を取得します

分類Dev

MYSQLは、重複が見つかった場合に最新のデータのみを含む2つの異なる日付の履歴テーブルから製品レコードを取得します

分類Dev

複数の列の組み合わせでテーブルから重複レコードを取得し、重複の場合は「Y」、単一レコードの場合は「N」を表示します

分類Dev

SQLテーブルのレコードを他のテーブルの値の合計で更新します

分類Dev

接続されたテーブルから子の合計レコードを取得します

分類Dev

異なるレコード間の時間差を計算します

分類Dev

SAS重複レコードの変数を合計する方法

分類Dev

同じテーブルの異なる列から固定数のレコードを取得します

分類Dev

SQL テーブルから 1 つの列を抽出し、異なる値と組み合わせた複数のレコードとして別のテーブルに挿入します

分類Dev

odataの合計レコードをフェッチせずに見つけることはできますか?

分類Dev

SQLで1つのフィールドだけで重複せずにレコードを選択し、フィールドの合計を重複させる方法

分類Dev

GROUP BYを使用せずに重複データから一意のレコードを取得する

分類Dev

2つのテーブルから異なるレコードを取得するSQLクエリ

分類Dev

パーセンテージを計算するために、値「Good」と「Bad」をブール値に変換します(つまり、すべてのレコードから、80%が「Good」でした)-SQLを使用

分類Dev

重複レコードから最初のレコードを取得し、他のテーブルでそのIDを使用します

分類Dev

SQLServerのテーブルから[重複するレコードを除く]を選択します

分類Dev

重複をカウントし、SQLの計算列にレコードを設定します

分類Dev

MYSQLIテーブルにレコードが1つしかない人を計算するには?

分類Dev

2つの異なるテーブルから(重複レコードなしで)データをフェッチする方法は?ここで、両方のテーブルは共通の値を持っています

分類Dev

ACCESS / SQL-複数のテーブルからのすべての一意のレコードを組み合わせるクエリを作成します

分類Dev

キーが重複しているテーブルで、異なるキーを持つ最新のレコードを検索します

分類Dev

このSQLクエリを使用している場合、値が重複します。つまり、テーブルには1つのレコードしかなく、8つのレコードが表示されます。

分類Dev

Oracleのテーブルから重複レコードを削除する方法

Related 関連記事

  1. 1

    同じテーブルのレコードを比較し、異なる日付での差を計算します

  2. 2

    ループmysqlphpを使用せずに、大きなテーブルから異なる識別子を持つ複数のレコードを削除します

  3. 3

    SQL-別のテーブルで結合して1つのテーブルから重複レコードを取得する方法

  4. 4

    jqueryを使用してテーブルレコードの合計量を計算するにはどうすればよいですか?

  5. 5

    postgresqlを使用して、複数のレコードにわたる2つのタイムスタンプ間の合計分数を計算します

  6. 6

    異なるテーブルからレコードを取得し、SQLで重複した日付を無視する方法は?

  7. 7

    2番目のテーブルから3列と複数のレコードの合計合計を取得します

  8. 8

    MYSQLは、重複が見つかった場合に最新のデータのみを含む2つの異なる日付の履歴テーブルから製品レコードを取得します

  9. 9

    複数の列の組み合わせでテーブルから重複レコードを取得し、重複の場合は「Y」、単一レコードの場合は「N」を表示します

  10. 10

    SQLテーブルのレコードを他のテーブルの値の合計で更新します

  11. 11

    接続されたテーブルから子の合計レコードを取得します

  12. 12

    異なるレコード間の時間差を計算します

  13. 13

    SAS重複レコードの変数を合計する方法

  14. 14

    同じテーブルの異なる列から固定数のレコードを取得します

  15. 15

    SQL テーブルから 1 つの列を抽出し、異なる値と組み合わせた複数のレコードとして別のテーブルに挿入します

  16. 16

    odataの合計レコードをフェッチせずに見つけることはできますか?

  17. 17

    SQLで1つのフィールドだけで重複せずにレコードを選択し、フィールドの合計を重複させる方法

  18. 18

    GROUP BYを使用せずに重複データから一意のレコードを取得する

  19. 19

    2つのテーブルから異なるレコードを取得するSQLクエリ

  20. 20

    パーセンテージを計算するために、値「Good」と「Bad」をブール値に変換します(つまり、すべてのレコードから、80%が「Good」でした)-SQLを使用

  21. 21

    重複レコードから最初のレコードを取得し、他のテーブルでそのIDを使用します

  22. 22

    SQLServerのテーブルから[重複するレコードを除く]を選択します

  23. 23

    重複をカウントし、SQLの計算列にレコードを設定します

  24. 24

    MYSQLIテーブルにレコードが1つしかない人を計算するには?

  25. 25

    2つの異なるテーブルから(重複レコードなしで)データをフェッチする方法は?ここで、両方のテーブルは共通の値を持っています

  26. 26

    ACCESS / SQL-複数のテーブルからのすべての一意のレコードを組み合わせるクエリを作成します

  27. 27

    キーが重複しているテーブルで、異なるキーを持つ最新のレコードを検索します

  28. 28

    このSQLクエリを使用している場合、値が重複します。つまり、テーブルには1つのレコードしかなく、8つのレコードが表示されます。

  29. 29

    Oracleのテーブルから重複レコードを削除する方法

ホットタグ

アーカイブ