計算列のグループ化に基づくdb2照会

Whisou138

基本結果を返すまで機能しているクエリがありますが、さまざまなグループに基づいて他の列/変数を選択する方法を見つけようとして問題が発生しています。

クエリのベースは次のとおりです。

SELECT
 EmpID,
 managerID,
 Group,
 quant as sales,
from products p
where active_date > CURRENT_DATE - 50 days;

問題は、これらのレコードは50日間ですが、過去25日間の条件に基づく列として3つの新しい計算を選択したいと思います。

私が現在戻ってきたとしましょう:

empId  |  managerID  |  group  |  sales
=======================================
123          1            A        4
321          1            B        2
516          1            C        8
345          2            D        4
839          2            E        7
849          2            F        2
192          3            G        9
221          4            H        3

したがって、group by empID(sum of sales、group by empID)、group by managerID、およびtotalに基づいて売上の合計を作成したいと思います(ただし、ここでは過去25日間のレコードのみに基づいてグループ化したいと思います)。

私の予想される出力のアイデア(過去50日間のすべてのレコードも過去25日間であったと仮定):

empId  |  managerID  |  group  |  sales  | salesEmpID  |  salesMngID  |  SalesTotal
====================================================================================
123          1            A        4           4             14             39
321          1            A        2           2             14             39
516          1            A        8           8             14             39
345          2            A        4           4             13             39
839          2            A        7           7             13             39
849          2            A        2           2             13             39
192          3            A        9           9              9             39
221          4            A        3           3              3             39

したがって、製品グループAの場合、これにより、各従業員の売上だけでなく、その営業マネージャーの売上、さらには製品グループAの総売上も得られます。

クエリが過去50日間であっても、そのようなものを取得し、数量の合計が過去25日間に基づいていることを確認するにはどうすればよいですか?

GMB

RDBMSがウィンドウ関数をサポートしていない場合に機能するソリューションを次に示します。

これは、一連の結合を作成して、各グループ(従業員、マネージャー、合計)の小計を計算することによって機能します。このdbフィドルを参照してください(DB2フィドルについては知らないので、MySQL5.7を使用しましたが、これはDB2で機能するはずです):

SELECT 
    t.empID,
    t.managerID,
    t.groupID,
    t.sales,
    temp.sales salesEmpID,
    tmng.sales salesMngID,
    tall.sales salesTotal
FROM 
    mytable t
    INNER JOIN (
        SELECT empID, SUM(sales) sales 
        FROM mytable 
        WHERE active_date > CURRENT_DATE - INTERVAL 25 DAY 
        GROUP BY empID
    ) temp ON temp.empID = t.empID
    INNER JOIN (
        SELECT managerID, SUM(sales) sales 
        FROM mytable 
        WHERE active_date > CURRENT_DATE - INTERVAL 25 DAY 
        GROUP BY managerID
    ) tmng ON tmng.managerID = t.managerID
    CROSS JOIN (
        SELECT SUM(sales) sales 
        FROM mytable 
        WHERE active_date > CURRENT_DATE - INTERVAL 25 DAY
    ) tall
WHERE t.active_date > CURRENT_DATE - INTERVAL 50 DAY;

| empID | managerID | groupID | 販売| salesEmpID | salesMngID | salesTotal | 
| ----- | --------- | ------- | ----- | ---------- | ---------- | ---------- | 
| 123 | 1 | A | 4 | 4 | 14 | 39 | 
| 321 | 1 | B | 2 | 2 | 14 | 39 | 
| 516 | 1 | C | 8 | 8 | 14 | 39 | 
| 345 | 2 | D | 4 | 4 | 13 | 39 | 
| 839 | 2 | E | 7 | 7 | 13 | 39 | 
| 849 | 2 | F | 2 | 2 | 13 | 39 | 
| 192 | 3 | G | 9 | 9 | 9 | 39 |
| 221 | 4 | H | 3 | 3 | 3 | 39 |

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

XSLTでのグループ化に基づく計算の問題

分類Dev

複数の列、計算頻度、およびパーセンテージに基づくグループ化

分類Dev

パンダのグループ化と条件に基づく計算

分類Dev

SQLServerの条件付き行グループ化に基づく列値の乗算

分類Dev

SQLServerの条件付き行グループ化に基づく列値の乗算

分類Dev

列に基づくグループ化

分類Dev

グループ全体の列の変化を計算し、基準に基づいて抽出する

分類Dev

行と列に基づくSSRS列のグループ化

分類Dev

列の値に基づくパンダのグループ化

分類Dev

他の列のシーケンスの条件に基づくグループ化の合計

分類Dev

Cosmos DBの計算列、別の列に基づく列

分類Dev

pandas2つの変数に基づくグループ化

分類Dev

数字キーに基づくオブジェクトの配列のグループ化と合計

分類Dev

パンダのグループ化-別の列に基づくグループ化された合計のパーセントとしての値

分類Dev

Rの異なる列の基準に基づいて、グループ化されたデータに計算変数を作成します

分類Dev

クエリフィールドに基づくssrs列のグループ化

分類Dev

列の合計値に基づいて行をグループ化する

分類Dev

2つのテーブルに基づくMysqlのグループ化

分類Dev

条件に基づくグループ化

分類Dev

IDとグループに基づく値の減算

分類Dev

2つの列に基づくデータフレーム内の計算

分類Dev

値に基づく2つのテーブル列の合計

分類Dev

Java 8クエリ-オブジェクトの複数のリストを持つキーに基づくグループ化計算

分類Dev

テーブルの列のデータ変数のグループ化に基づくMSAccessのクロス集計クエリ列見出し

分類Dev

ペアワイズ等式に基づく列のグループ化

分類Dev

AG-Grid:子セットに基づく列のグループ化

分類Dev

ハンドルバー-テンプレート内の配列キーに基づく計算

分類Dev

別のテーブルの数式に基づく列の計算

分類Dev

各グループ (group by) の 2 つの最大値に基づいて合計を計算する方法は?

Related 関連記事

  1. 1

    XSLTでのグループ化に基づく計算の問題

  2. 2

    複数の列、計算頻度、およびパーセンテージに基づくグループ化

  3. 3

    パンダのグループ化と条件に基づく計算

  4. 4

    SQLServerの条件付き行グループ化に基づく列値の乗算

  5. 5

    SQLServerの条件付き行グループ化に基づく列値の乗算

  6. 6

    列に基づくグループ化

  7. 7

    グループ全体の列の変化を計算し、基準に基づいて抽出する

  8. 8

    行と列に基づくSSRS列のグループ化

  9. 9

    列の値に基づくパンダのグループ化

  10. 10

    他の列のシーケンスの条件に基づくグループ化の合計

  11. 11

    Cosmos DBの計算列、別の列に基づく列

  12. 12

    pandas2つの変数に基づくグループ化

  13. 13

    数字キーに基づくオブジェクトの配列のグループ化と合計

  14. 14

    パンダのグループ化-別の列に基づくグループ化された合計のパーセントとしての値

  15. 15

    Rの異なる列の基準に基づいて、グループ化されたデータに計算変数を作成します

  16. 16

    クエリフィールドに基づくssrs列のグループ化

  17. 17

    列の合計値に基づいて行をグループ化する

  18. 18

    2つのテーブルに基づくMysqlのグループ化

  19. 19

    条件に基づくグループ化

  20. 20

    IDとグループに基づく値の減算

  21. 21

    2つの列に基づくデータフレーム内の計算

  22. 22

    値に基づく2つのテーブル列の合計

  23. 23

    Java 8クエリ-オブジェクトの複数のリストを持つキーに基づくグループ化計算

  24. 24

    テーブルの列のデータ変数のグループ化に基づくMSAccessのクロス集計クエリ列見出し

  25. 25

    ペアワイズ等式に基づく列のグループ化

  26. 26

    AG-Grid:子セットに基づく列のグループ化

  27. 27

    ハンドルバー-テンプレート内の配列キーに基づく計算

  28. 28

    別のテーブルの数式に基づく列の計算

  29. 29

    各グループ (group by) の 2 つの最大値に基づいて合計を計算する方法は?

ホットタグ

アーカイブ