{
  "format": "dataset-manifest/1",
  "slug": "multiplayer-matches",
  "version": 2,
  "seed": "multiplayer-matches:1",
  "spec": {
    "format": "dataset/1",
    "slug": "multiplayer-matches",
    "name": "Multiplayer Matches",
    "tagline": "Players, matches, participant scores, and in-game purchases from an online multiplayer game.",
    "description": "Players compete in matches across various modes and maps in a vibrant online gaming environment. Each match pits participants against one another, creating a dynamic atmosphere where strategies and skills are tested. Gamers join from different locations, forming a diverse community united by their passion for competition and performance. As they engage in battles, they can also make in-game purchases to enhance their experience, customize their avatars, or gain an advantage in the matches.\n\nThe data is structured to capture critical elements of this gaming operation. The 'players' table contains entries for each individual gamer, detailing their unique identifiers and key attributes. The 'matches' table features records of each match that has taken place, including information about the game mode and map used. The 'match_participants' table connects players to specific matches, containing details about their scores and outcomes in those events. This is where you can examine who played in each match and how they performed. Additionally, the 'purchases' table records in-game transactions, allowing you to analyze player spending habits and the impact of purchases on match performance. Lastly, the 'player_statistics' table offers insights into individual player performance over time, compiling metrics that reflect their skills and engagement.\n\nThis dataset provides an excellent opportunity for aspiring data analysts and developers to practice working with relational databases, exploring joins between tables, and answering questions about player performance trends, match outcomes, and the correlation between purchases and match success. By examining these connections, one can gain a deeper understanding of player behavior and strategies within the gaming domain. Please note that the data is synthetic, designed to provide a realistic yet fictional representation of a multiplayer gaming experience.",
    "domain": "gaming",
    "shape": "transactional",
    "useCases": [
      "sql-practice",
      "analytics-demo"
    ],
    "keywords": [
      "gaming",
      "multiplayer",
      "matches",
      "players",
      "scores",
      "purchases",
      "analytics",
      "sql"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "players": {
        "description": "This table records the players in the game, with each row representing a unique player. It links to match_participants to track player performance.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each player."
          },
          "username": {
            "kind": "words",
            "min": 3,
            "max": 15,
            "unique": true,
            "description": "The player's in-game username."
          },
          "join_date": {
            "kind": "date",
            "from": "2020-01-01",
            "to": "2023-01-01",
            "description": "The date the player joined the game."
          }
        }
      },
      "matches": {
        "description": "This table contains details about matches, with each row representing a match instance. It connects to match_participants and includes mode and map information.",
        "rows": 150,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each match."
          },
          "mode": {
            "kind": "enum",
            "values": [
              "Deathmatch",
              "Capture the Flag",
              "Battle Royale"
            ],
            "description": "The mode of the match.",
            "weights": [
              6,
              2,
              1
            ]
          },
          "map": {
            "kind": "words",
            "min": 3,
            "max": 30,
            "description": "The map where the match took place.",
            "nullable": true
          },
          "match_date": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "dayProfile": "waking",
            "description": "The date and time when the match occurred.",
            "nullable": true,
            "when": {
              "column": "mode",
              "in": [
                "Deathmatch",
                "Capture the Flag",
                "Battle Royale"
              ]
            }
          }
        }
      },
      "match_participants": {
        "description": "This table tracks the players participating in each match along with their scores and outcomes. It links players and matches.",
        "rows": {
          "per": "matches",
          "via": "match_id",
          "min": 2,
          "max": 8,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each match participant entry."
          },
          "match_id": {
            "kind": "fk",
            "ref": "matches.id",
            "description": "Reference to the match the player participated in."
          },
          "player_id": {
            "kind": "fk",
            "ref": "players.id",
            "description": "Reference to the player participating in the match."
          },
          "score": {
            "kind": "int",
            "min": 0,
            "max": 100,
            "description": "The score achieved by the player in the match.",
            "nullable": true,
            "when": {
              "column": "outcome",
              "in": [
                "Win",
                "Loss",
                "Draw"
              ]
            },
            "distribution": "high"
          },
          "outcome": {
            "kind": "enum",
            "values": [
              "Win",
              "Loss",
              "Draw"
            ],
            "description": "The outcome of the match for the player.",
            "weights": [
              5,
              4,
              1
            ]
          }
        }
      },
      "purchases": {
        "description": "This table records in-game purchases made by players, linking to the player and match tables to analyze spending behavior.",
        "rows": 300,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each purchase."
          },
          "player_id": {
            "kind": "fk",
            "ref": "players.id",
            "description": "Reference to the player who made the purchase."
          },
          "purchase_date": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "dayProfile": "waking",
            "description": "The date and time the purchase was made."
          },
          "amount": {
            "kind": "decimal",
            "min": 0.99,
            "max": 99.99,
            "scale": 2,
            "description": "The amount spent on the purchase.",
            "nullable": true,
            "distribution": "long-tail"
          },
          "item": {
            "kind": "words",
            "min": 3,
            "max": 30,
            "description": "The name of the purchased item.",
            "nullable": true
          }
        }
      },
      "player_statistics": {
        "description": "This table holds aggregated statistics for each player, summarizing their performance across matches.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each player statistic entry."
          },
          "player_id": {
            "kind": "fk",
            "ref": "players.id",
            "description": "Reference to the player."
          },
          "total_matches": {
            "kind": "int",
            "min": 1,
            "max": 500,
            "description": "Total number of matches played by the player.",
            "nullable": true
          },
          "total_wins": {
            "kind": "int",
            "min": 0,
            "max": 500,
            "description": "Total number of matches won by the player.",
            "nullable": true
          },
          "average_score": {
            "kind": "decimal",
            "min": 0,
            "max": 100,
            "scale": 2,
            "description": "The average score achieved by the player.",
            "nullable": true,
            "distribution": "normal"
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "categorical",
      "timestamped",
      "monetary",
      "nullable"
    ],
    "analysisQuestions": [
      "What is the average score of players across different match modes?",
      "How do in-game purchases correlate with match outcomes?",
      "Which maps are most popular among players based on match frequency?",
      "What percentage of matches result in a win for players?",
      "How does the time of day affect match participation rates?"
    ],
    "suggestedQueries": [
      {
        "title": "List all players and their total matches",
        "sql": "SELECT p.username, COUNT(mp.match_id) AS total_matches FROM players p LEFT JOIN match_participants mp ON p.id = mp.player_id GROUP BY p.username;",
        "dialect": "postgres"
      },
      {
        "title": "Average score per match mode",
        "sql": "SELECT m.mode, AVG(mp.score) AS average_score FROM matches m JOIN match_participants mp ON m.id = mp.match_id GROUP BY m.mode;",
        "dialect": "postgres"
      },
      {
        "title": "Total purchases by player",
        "sql": "SELECT p.username, SUM(pr.amount) AS total_spent FROM players p JOIN purchases pr ON p.id = pr.player_id GROUP BY p.username;",
        "dialect": "postgres"
      },
      {
        "title": "Match outcomes by map",
        "sql": "SELECT m.map, mp.outcome, COUNT(*) AS outcome_count FROM matches m JOIN match_participants mp ON m.id = mp.match_id GROUP BY m.map, mp.outcome;",
        "dialect": "postgres"
      },
      {
        "title": "Player performance statistics",
        "sql": "SELECT ps.player_id, ps.total_wins, ps.total_matches, (ps.total_wins::decimal / ps.total_matches) * 100 AS win_percentage FROM player_statistics ps;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Game Developers",
        "body": "Game developers can utilize this dataset to analyze player behavior and performance metrics for balance adjustments. By examining match outcomes and scores, they can identify which modes or maps may need reworking or optimization."
      },
      {
        "title": "Data Analysts",
        "body": "Data analysts can use this dataset to generate insights into player spending patterns and engagement levels. By correlating in-game purchases with match outcomes, they can advise marketing strategies to enhance player retention."
      },
      {
        "title": "Game Community Managers",
        "body": "Community managers can leverage this data to understand player trends and preferences. By analyzing player statistics and match data, they can organize community events or tournaments that cater to player interests."
      },
      {
        "title": "Educators in Game Design",
        "body": "Educators can employ this dataset in classroom settings to teach students about game mechanics and analytics. By allowing students to query the data, they can learn practical skills in data analysis while understanding game dynamics."
      }
    ]
  },
  "counts": {
    "matches": 150,
    "players": 200,
    "match_participants": 635,
    "player_statistics": 200,
    "purchases": 300
  },
  "stats": {
    "players": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "username": {
          "nulls": 0,
          "distinct": 200
        },
        "join_date": {
          "nulls": 0,
          "distinct": 181,
          "min": "2020-01-03",
          "max": "2023-01-01"
        }
      }
    },
    "matches": {
      "rows": 150,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 150,
          "min": 1,
          "max": 150
        },
        "mode": {
          "nulls": 0,
          "distinct": 3,
          "min": "Battle Royale",
          "max": "Deathmatch"
        },
        "map": {
          "nulls": 12,
          "distinct": 138
        },
        "match_date": {
          "nulls": 0,
          "distinct": 150,
          "min": "2023-01-01 21:29:24",
          "max": "2023-12-22 13:56:38"
        }
      }
    },
    "match_participants": {
      "rows": 635,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 635,
          "min": 1,
          "max": 635
        },
        "match_id": {
          "nulls": 0,
          "distinct": 150,
          "min": 1,
          "max": 150
        },
        "player_id": {
          "nulls": 0,
          "distinct": 191,
          "min": 1,
          "max": 200
        },
        "score": {
          "nulls": 0,
          "distinct": 100,
          "min": 0,
          "max": 100
        },
        "outcome": {
          "nulls": 0,
          "distinct": 3,
          "min": "Draw",
          "max": "Win"
        }
      }
    },
    "purchases": {
      "rows": 300,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "player_id": {
          "nulls": 0,
          "distinct": 160,
          "min": 1,
          "max": 200
        },
        "purchase_date": {
          "nulls": 0,
          "distinct": 300,
          "min": "2023-01-02 15:55:30",
          "max": "2023-12-31 19:59:57"
        },
        "amount": {
          "nulls": 27,
          "distinct": 261,
          "min": 0.99,
          "max": 99.55
        },
        "item": {
          "nulls": 35,
          "distinct": 265
        }
      }
    },
    "player_statistics": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "player_id": {
          "nulls": 0,
          "distinct": 120,
          "min": 1,
          "max": 200
        },
        "total_matches": {
          "nulls": 15,
          "distinct": 158,
          "min": 1,
          "max": 497
        },
        "total_wins": {
          "nulls": 25,
          "distinct": 145,
          "min": 2,
          "max": 495
        },
        "average_score": {
          "nulls": 19,
          "distinct": 177,
          "min": 9.65,
          "max": 86.6
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/matches.csv",
      "format": "csv",
      "table": "matches",
      "key": "datasets/multiplayer-matches/v2/csv/matches.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/multiplayer-matches/v2/csv/matches.csv",
      "bytes": 19714,
      "sha256": "887c6c4e70747f7125785405018ea8ba58b197aa0f3332954d9bf8bca91fdeaf",
      "rows": 150,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/players.csv",
      "format": "csv",
      "table": "players",
      "key": "datasets/multiplayer-matches/v2/csv/players.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/multiplayer-matches/v2/csv/players.csv",
      "bytes": 15150,
      "sha256": "fbc2918d09bdfe201b8812ce859641f5bc1a1d119ac08fb08b9d640b1027a1e9",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/match_participants.csv",
      "format": "csv",
      "table": "match_participants",
      "key": "datasets/multiplayer-matches/v2/csv/match_participants.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/multiplayer-matches/v2/csv/match_participants.csv",
      "bytes": 12162,
      "sha256": "373ce4590bc781d6fd8c0994196a1f666fa876c0841022013ed986480707401c",
      "rows": 635,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/player_statistics.csv",
      "format": "csv",
      "table": "player_statistics",
      "key": "datasets/multiplayer-matches/v2/csv/player_statistics.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/multiplayer-matches/v2/csv/player_statistics.csv",
      "bytes": 4157,
      "sha256": "972d452009dfd297e4659466c47f34d79c5e806c7bb866c4ca5813359722ab1d",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/purchases.csv",
      "format": "csv",
      "table": "purchases",
      "key": "datasets/multiplayer-matches/v2/csv/purchases.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/multiplayer-matches/v2/csv/purchases.csv",
      "bytes": 38678,
      "sha256": "c9c3dab09f5a8f082896ab7eb256363adea8cc8874b4ea06a0d00525070d9566",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "multiplayer-matches.json",
      "format": "json",
      "table": null,
      "key": "datasets/multiplayer-matches/v2/multiplayer-matches.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/multiplayer-matches/v2/multiplayer-matches.json",
      "bytes": 232240,
      "sha256": "b76ddb39b13a882d7763d23391cc21412a207e715360831ebe8dc96276932875",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/multiplayer-matches/v2/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/multiplayer-matches/v2/sql/postgres.sql",
      "bytes": 111701,
      "sha256": "6d43e9544caa9e61025addb22057d951954f9f841d7cd3458ef5f41b7d209f0f",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/multiplayer-matches/v2/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/multiplayer-matches/v2/sql/mysql.sql",
      "bytes": 111104,
      "sha256": "4f1c50892ddaae8234b3ab6c5d960e1ebaffd2314c2532d99cce47cfffc99a04",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/multiplayer-matches/v2/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/multiplayer-matches/v2/sql/mssql.sql",
      "bytes": 113490,
      "sha256": "3aa7d2abcb995b4f151dc272075e0ccccdc9b806bae1f43c1a7c1abb9ba8b9e9",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/multiplayer-matches/v2/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/multiplayer-matches/v2/sql/sqlite.sql",
      "bytes": 110874,
      "sha256": "b0bb356e5dc844bda169a35ab4f9656c883e99b05cc8cdef4a1d45450de49c7b",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/multiplayer-matches/v2/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/multiplayer-matches/v2/prisma/seed.ts",
      "bytes": 190112,
      "sha256": "7952305777730ebc4dbb58289bf94a9bd7ccb9463e37debfe73036188b13f989",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/multiplayer-matches/v2/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/multiplayer-matches/v2/django/fixtures.json",
      "bytes": 300393,
      "sha256": "4f9b0abcca9f6c789030685acf2ac8a0a4fa64f721aff551f63798efafc93aa3",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788768648609,
  "updatedAt": 1788785034563
}
