Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix (day2): update scorer_class to scoring_class #126

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Commits on Nov 18, 2024

  1. fix (day2): update scorer_class to scoring_class

    In the lab video the column is named `scoring_class` :
    
    ```sql
    INSERT INTO players
    WITH years AS (
        SELECT *
        FROM GENERATE_SERIES(1996, 2022) AS season
    ), p AS (
        SELECT
            player_name,
            MIN(season) AS first_season
        FROM player_seasons
        GROUP BY player_name
    ), players_and_seasons AS (
        SELECT *
        FROM p
        JOIN years y
            ON p.first_season <= y.season
    ), windowed AS (
        SELECT
            pas.player_name,
            pas.season,
            ARRAY_REMOVE(
                ARRAY_AGG(
                    CASE
                        WHEN ps.season IS NOT NULL
                            THEN ROW(
                                ps.season,
                                ps.gp,
                                ps.pts,
                                ps.reb,
                                ps.ast
                            )::season_stats
                    END)
                OVER (PARTITION BY pas.player_name ORDER BY COALESCE(pas.season, ps.season)),
                NULL
            ) AS seasons
        FROM players_and_seasons pas
        LEFT JOIN player_seasons ps
            ON pas.player_name = ps.player_name
            AND pas.season = ps.season
        ORDER BY pas.player_name, pas.season
    ), static AS (
        SELECT
            player_name,
            MAX(height) AS height,
            MAX(college) AS college,
            MAX(country) AS country,
            MAX(draft_year) AS draft_year,
            MAX(draft_round) AS draft_round,
            MAX(draft_number) AS draft_number
        FROM player_seasons
        GROUP BY player_name
    )
    SELECT
        w.player_name,
        s.height,
        s.college,
        s.country,
        s.draft_year,
        s.draft_round,
        s.draft_number,
        seasons AS season_stats,
        CASE
            WHEN (seasons[CARDINALITY(seasons)]::season_stats).pts > 20 THEN 'star'
            WHEN (seasons[CARDINALITY(seasons)]::season_stats).pts > 15 THEN 'good'
            WHEN (seasons[CARDINALITY(seasons)]::season_stats).pts > 10 THEN 'average'
            ELSE 'bad'
        END::scorer_class AS scorer_class,
        w.season - (seasons[CARDINALITY(seasons)]::season_stats).season as years_since_last_active,
        w.season,
        (seasons[CARDINALITY(seasons)]::season_stats).season = season AS is_active
    FROM windowed w
    JOIN static s
        ON w.player_name = s.player_name;
    ```
    glopez-dev authored Nov 18, 2024
    Configuration menu
    Copy the full SHA
    48a9aa1 View commit details
    Browse the repository at this point in the history