SQLを使用した集約関数に基づく複数の列の結合

lz975545:

テーブルAとテーブルBの2つのテーブルがあります。player_id、date、spins、coin_in、および収益をプレーヤーIDと日付に集計しようとしていますが、それらをどのように結合するかわかりません。私はまだSQLにかなり慣れていません。

Table A

| player_id |       date | spins | coin_in |
|-----------|------------|-------|---------|
|    252156 | 2020-05-01 |     0 |       0 |
|    252156 | 2020-05-02 |     5 |  100000 |
|    252156 | 2020-05-03 |     1 |   50000 |
|    252156 | 2020-05-04 |   100 | 1000000 |
|    252156 | 2020-05-05 |    10 |  100000 |
|    923451 | 2020-05-04 |    50 | 1000000 |
|    923451 | 2020-05-05 |     5 |  100000 |
Table B

| player_id |       date |             datetime | revenue |
|-----------|------------|----------------------|---------|
|    252156 | 2020-05-01 | 2020-05-01T22:54:59Z |    9.99 |
|    252156 | 2020-05-01 | 2020-05-01T23:54:59Z |   19.99 |
|    252156 | 2020-05-05 | 2020-05-05T20:54:59Z |   49.99 |
|    252156 | 2020-05-05 | 2020-05-05T21:54:59Z |   99.99 |
|    923451 | 2020-05-04 | 2020-05-04T19:54:59Z |    0.99 |

内部結合を使用してみましたが、特定の日付が返されません。

SELECT A.player_id, A.date, A.spins, A.coin_in, SUM(revenue)
FROM A
INNER JOIN B ON B.player_id = A.player_id
GROUP BY A.player_id;
| player_id |       date | spins | coin_in | SUM(revenue) |
|-----------|------------|-------|---------|--------------|
|    252156 | 2020-05-01 |     0 |       0 |        899.8 |
|    923451 | 2020-05-04 |    50 | 1000000 |         1.98 |
GMB:

最良の答えは、テーブル間のカーディナリティに大きく依存します。

最も安全なアプローチはUNION ALLであり、各テーブルでユーザーおよび日付ごとに可能な0からNのレコードに対応します。

SELECT player_id, date, SUM(spins), SUM(coin_in), SUM(revenue)
FROM (
    SELECT player_id, date, spins, coin_in, null revenue FROM B
    UNION ALL SELECT player_id, date, 0, 0, revenue FROM A
) t
GROUP BY B.player_id, date

場合はA(あなたのサンプルデータに示すように)すべての日付を持って、その後、LEFT JOIN好ましいであろう-しかし、あなたは、事前に集計をする行を乗じ避ける必要があります。

SELECT a.*, b.revenue
FROM (
    SELECT player_id, date, SUM(a.spins) spins, SUM(a.coin_in) coin_in
    FROM a
    GROUP BY player_id, date
) a
LEFT JOIN (
    SELECT player_id, date, SUM(b.revenue) revenue 
    FROM b
    GROUP BY player_id, date
) b ON a.player_id = b.player_id AND a.date = b.date

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

複数の基準を使用した集計と、カウントキーに基づく合計の一致

分類Dev

dplyrを使用した複数の列の値の範囲に基づく分類

分類Dev

複数の列に基づいて行を結合し、複数の列を結合します

分類Dev

列名に基づくPandasの複数の列の明確な集約

分類Dev

複数の列を使用する条件に基づいてPandasDataFrameを集約しますか?

分類Dev

SQL Unpivot /値に基づいて、複数の列を1つの列に結合します

分類Dev

1つの列値に基づいてSQLテーブルの複数の行を結合します

分類Dev

列Aに基づいてRの複数の行を結合します

分類Dev

パンダ集計を使用した他の列に基づく結果

分類Dev

GROUPBYの結果に基づく複数の自己結合

分類Dev

合計を使用した複数の結合に基づいてクエリを作成できますか?

分類Dev

共通の値に基づいて複数の行を集約します

分類Dev

複数の列を使用したSQL内部結合

分類Dev

集計関数の結果に基づくケース

分類Dev

複数の結合でのSQL集計関数の使用

分類Dev

列インデックスによって指定された列の共通値に基づいて、Rの複数の行を集約します

分類Dev

data.tableを使用した複数の列に基づく行のサブセット化-最速の方法

分類Dev

stringdist_joinを使用した複数の列による結合

分類Dev

SQL Serverの基準に基づいて、単一の列を複数の列に合計します

分類Dev

Rデータ管理:他の変数からの複数の条件に基づいて、複数の変数を新しく生成された変数に集約します

分類Dev

複数の行を列の値ごとに1つの行に結合し、複数の列について、連結された行の数に基づいて複数のデータフレームに分割します

分類Dev

製品集約を使用した複数の列によるグループ化

分類Dev

パンダの複数の列にわたるIDに基づく合計

分類Dev

パンダの列の値に基づいて、複数の行を1つの行に結合します

分類Dev

Pythonの角かっこに基づく関数の複合

分類Dev

複数の行に基づく合計

分類Dev

Elasticsearch NEST:複数の基準を使用した用語集約の順序付け

分類Dev

Groupbyして、別の列の日時に基づいて複数の行を結合しますか?

分類Dev

JPA仕様の複数のForeignKeyはに基づいた結合します

Related 関連記事

  1. 1

    複数の基準を使用した集計と、カウントキーに基づく合計の一致

  2. 2

    dplyrを使用した複数の列の値の範囲に基づく分類

  3. 3

    複数の列に基づいて行を結合し、複数の列を結合します

  4. 4

    列名に基づくPandasの複数の列の明確な集約

  5. 5

    複数の列を使用する条件に基づいてPandasDataFrameを集約しますか?

  6. 6

    SQL Unpivot /値に基づいて、複数の列を1つの列に結合します

  7. 7

    1つの列値に基づいてSQLテーブルの複数の行を結合します

  8. 8

    列Aに基づいてRの複数の行を結合します

  9. 9

    パンダ集計を使用した他の列に基づく結果

  10. 10

    GROUPBYの結果に基づく複数の自己結合

  11. 11

    合計を使用した複数の結合に基づいてクエリを作成できますか?

  12. 12

    共通の値に基づいて複数の行を集約します

  13. 13

    複数の列を使用したSQL内部結合

  14. 14

    集計関数の結果に基づくケース

  15. 15

    複数の結合でのSQL集計関数の使用

  16. 16

    列インデックスによって指定された列の共通値に基づいて、Rの複数の行を集約します

  17. 17

    data.tableを使用した複数の列に基づく行のサブセット化-最速の方法

  18. 18

    stringdist_joinを使用した複数の列による結合

  19. 19

    SQL Serverの基準に基づいて、単一の列を複数の列に合計します

  20. 20

    Rデータ管理:他の変数からの複数の条件に基づいて、複数の変数を新しく生成された変数に集約します

  21. 21

    複数の行を列の値ごとに1つの行に結合し、複数の列について、連結された行の数に基づいて複数のデータフレームに分割します

  22. 22

    製品集約を使用した複数の列によるグループ化

  23. 23

    パンダの複数の列にわたるIDに基づく合計

  24. 24

    パンダの列の値に基づいて、複数の行を1つの行に結合します

  25. 25

    Pythonの角かっこに基づく関数の複合

  26. 26

    複数の行に基づく合計

  27. 27

    Elasticsearch NEST:複数の基準を使用した用語集約の順序付け

  28. 28

    Groupbyして、別の列の日時に基づいて複数の行を結合しますか?

  29. 29

    JPA仕様の複数のForeignKeyはに基づいた結合します

ホットタグ

アーカイブ