bigquery/bqml/resources/feature_input_query.sql (479 lines of code) (raw):

-- Copyright 2021 Google LLC -- -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. # This query creates a sample table using # the ncaa_basketball public dataset. It # uses a format string token for setting # the destination dataset. CREATE OR REPLACE TABLE `{0}.cume_games` AS SELECT game_id, season, scheduled_date, home_team, market as school_name, CONCAT(CAST(season AS STRING), ":", team_id) AS team_id, conf_name, division_name, minutes, points, fast_break_pts, second_chance_pts, field_goals_made, field_goals_att, field_goals_pct, three_points_made, three_points_att, three_points_pct, two_points_made, two_points_att, two_points_pct, free_throws_made, free_throws_att, free_throws_pct, ts_pct, efg_pct, rebounds, offensive_rebounds, defensive_rebounds, dreb_pct, oreb_pct, steals, blocks, blocked_att, assists, turnovers, team_turnovers, points_off_turnovers, assists_turnover_ratio, ast_fgm_pct, personal_fouls, flagrant_fouls, player_tech_fouls, team_tech_fouls, coach_tech_fouls, ejections, foulouts, score_delta, opp_score_delta, possessions, ROW_NUMBER() OVER(partition by season, team_id order by scheduled_date ASC) AS game_number, SUM(is_win) OVER(partition by season, team_id order by scheduled_date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS wins, SUM(is_loss) OVER(partition by season, team_id order by scheduled_date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS losses, ROUND(AVG(points) OVER w1, 2) AS points_avg_last_1, ROUND(AVG(points) OVER w5, 2) AS points_avg_last_5, ROUND(AVG(points) OVER w10, 2) AS points_avg_last_10, ROUND(AVG(fast_break_pts) OVER w1, 2) AS fast_break_pts_avg_last_1, ROUND(AVG(fast_break_pts) OVER w5, 2) AS fast_break_pts_avg_last_5, ROUND(AVG(fast_break_pts) OVER w10, 2) AS fast_break_pts_avg_last_10, ROUND(AVG(second_chance_pts) OVER w1, 2) AS second_chance_pts_avg_last_1, ROUND(AVG(second_chance_pts) OVER w5, 2) AS second_chance_pts_avg_last_5, ROUND(AVG(second_chance_pts) OVER w10, 2) AS second_chance_pts_avg_last_10, ROUND(AVG(field_goals_made) OVER w1, 2) AS field_goals_made_avg_last_1, ROUND(AVG(field_goals_made) OVER w5, 2) AS field_goals_made_avg_last_5, ROUND(AVG(field_goals_made) OVER w10, 2) AS field_goals_made_avg_last_10, ROUND(AVG(field_goals_att) OVER w1, 2) AS field_goals_att_avg_last_1, ROUND(AVG(field_goals_att) OVER w5, 2) AS field_goals_att_avg_last_5, ROUND(AVG(field_goals_att) OVER w10, 2) AS field_goals_att_avg_last_10, ROUND(AVG(field_goals_pct) OVER w1, 2) AS field_goals_pct_avg_last_1, ROUND(AVG(field_goals_pct) OVER w5, 2) AS field_goals_pct_avg_last_5, ROUND(AVG(field_goals_pct) OVER w10, 2) AS field_goals_pct_avg_last_10, ROUND(AVG(three_points_made) OVER w1, 2) AS three_points_made_avg_last_1, ROUND(AVG(three_points_made) OVER w5, 2) AS three_points_made_avg_last_5, ROUND(AVG(three_points_made) OVER w10, 2) AS three_points_made_avg_last_10, ROUND(AVG(three_points_att) OVER w1, 2) AS three_points_att_avg_last_1, ROUND(AVG(three_points_att) OVER w5, 2) AS three_points_att_avg_last_5, ROUND(AVG(three_points_att) OVER w10, 2) AS three_points_att_avg_last_10, ROUND(AVG(three_points_pct) OVER w1, 2) AS three_points_pct_avg_last_1, ROUND(AVG(three_points_pct) OVER w5, 2) AS three_points_pct_avg_last_5, ROUND(AVG(three_points_pct) OVER w10, 2) AS three_points_pct_avg_last_10, ROUND(AVG(two_points_made) OVER w1, 2) AS two_points_made_avg_last_1, ROUND(AVG(two_points_made) OVER w5, 2) AS two_points_made_avg_last_5, ROUND(AVG(two_points_made) OVER w10, 2) AS two_points_made_avg_last_10, ROUND(AVG(two_points_att) OVER w1, 2) AS two_points_att_avg_last_1, ROUND(AVG(two_points_att) OVER w5, 2) AS two_points_att_avg_last_5, ROUND(AVG(two_points_att) OVER w10, 2) AS two_points_att_avg_last_10, ROUND(AVG(two_points_pct) OVER w1, 2) AS two_points_pct_avg_last_1, ROUND(AVG(two_points_pct) OVER w5, 2) AS two_points_pct_avg_last_5, ROUND(AVG(two_points_pct) OVER w10, 2) AS two_points_pct_avg_last_10, ROUND(AVG(free_throws_made) OVER w1, 2) AS free_throws_made_avg_last_1, ROUND(AVG(free_throws_made) OVER w5, 2) AS free_throws_made_avg_last_5, ROUND(AVG(free_throws_made) OVER w10, 2) AS free_throws_made_avg_last_10, ROUND(AVG(free_throws_att) OVER w1, 2) AS free_throws_att_avg_last_1, ROUND(AVG(free_throws_att) OVER w5, 2) AS free_throws_att_avg_last_5, ROUND(AVG(free_throws_att) OVER w10, 2) AS free_throws_att_avg_last_10, ROUND(AVG(free_throws_pct) OVER w1, 2) AS free_throws_pct_avg_last_1, ROUND(AVG(free_throws_pct) OVER w5, 2) AS free_throws_pct_avg_last_5, ROUND(AVG(free_throws_pct) OVER w10, 2) AS free_throws_pct_avg_last_10, ROUND(AVG(ts_pct) OVER w1, 2) AS ts_pct_avg_last_1, ROUND(AVG(ts_pct) OVER w5, 2) AS ts_pct_avg_last_5, ROUND(AVG(ts_pct) OVER w10, 2) AS ts_pct_avg_last_10, ROUND(AVG(efg_pct) OVER w1, 2) AS efg_pct_avg_last_1, ROUND(AVG(efg_pct) OVER w5, 2) AS efg_pct_avg_last_5, ROUND(AVG(efg_pct) OVER w10, 2) AS efg_pct_avg_last_10, ROUND(AVG(rebounds) OVER w1, 2) AS rebounds_avg_last_1, ROUND(AVG(rebounds) OVER w5, 2) AS rebounds_avg_last_5, ROUND(AVG(rebounds) OVER w10, 2) AS rebounds_avg_last_10, ROUND(AVG(offensive_rebounds) OVER w1, 2) AS offensive_rebounds_avg_last_1, ROUND(AVG(offensive_rebounds) OVER w5, 2) AS offensive_rebounds_avg_last_5, ROUND(AVG(offensive_rebounds) OVER w10, 2) AS offensive_rebounds_avg_last_10, ROUND(AVG(defensive_rebounds) OVER w1, 2) AS defensive_rebounds_avg_last_1, ROUND(AVG(defensive_rebounds) OVER w5, 2) AS defensive_rebounds_avg_last_5, ROUND(AVG(defensive_rebounds) OVER w10, 2) AS defensive_rebounds_avg_last_10, ROUND(AVG(dreb_pct) OVER w1, 2) AS dreb_pct_avg_last_1, ROUND(AVG(dreb_pct) OVER w5, 2) AS dreb_pct_avg_last_5, ROUND(AVG(dreb_pct) OVER w10, 2) AS dreb_pct_avg_last_10, ROUND(AVG(oreb_pct) OVER w1, 2) AS oreb_pct_avg_last_1, ROUND(AVG(oreb_pct) OVER w5, 2) AS oreb_pct_avg_last_5, ROUND(AVG(oreb_pct) OVER w10, 2) AS oreb_pct_avg_last_10, ROUND(AVG(steals) OVER w1, 2) AS steals_avg_last_1, ROUND(AVG(steals) OVER w5, 2) AS steals_avg_last_5, ROUND(AVG(steals) OVER w10, 2) AS steals_avg_last_10, ROUND(AVG(blocks) OVER w1, 2) AS blocks_avg_last_1, ROUND(AVG(blocks) OVER w5, 2) AS blocks_avg_last_5, ROUND(AVG(blocks) OVER w10, 2) AS blocks_avg_last_10, ROUND(AVG(assists) OVER w1, 2) AS assists_avg_last_1, ROUND(AVG(assists) OVER w5, 2) AS assists_avg_last_5, ROUND(AVG(assists) OVER w10, 2) AS assists_avg_last_10, ROUND(AVG(turnovers) OVER w1, 2) AS turnovers_avg_last_1, ROUND(AVG(turnovers) OVER w5, 2) AS turnovers_avg_last_5, ROUND(AVG(turnovers) OVER w10, 2) AS turnovers_avg_last_10, ROUND(AVG(team_turnovers) OVER w1, 2) AS team_turnovers_avg_last_1, ROUND(AVG(team_turnovers) OVER w5, 2) AS team_turnovers_avg_last_5, ROUND(AVG(team_turnovers) OVER w10, 2) AS team_turnovers_avg_last_10, ROUND(AVG(points_off_turnovers) OVER w1, 2) AS points_off_turnovers_avg_last_1, ROUND(AVG(points_off_turnovers) OVER w5, 2) AS points_off_turnovers_avg_last_5, ROUND(AVG(points_off_turnovers) OVER w10, 2) AS points_off_turnovers_avg_last_10, ROUND(AVG(assists_turnover_ratio) OVER w1, 2) AS assists_turnover_ratio_avg_last_1, ROUND(AVG(assists_turnover_ratio) OVER w5, 2) AS assists_turnover_ratio_avg_last_5, ROUND(AVG(assists_turnover_ratio) OVER w10, 2) AS assists_turnover_ratio_avg_last_10, ROUND(AVG(ast_fgm_pct) OVER w1, 2) AS ast_fgm_pct_avg_last_1, ROUND(AVG(ast_fgm_pct) OVER w5, 2) AS ast_fgm_pct_avg_last_5, ROUND(AVG(ast_fgm_pct) OVER w10, 2) AS ast_fgm_pct_avg_last_10, ROUND(AVG(personal_fouls) OVER w1, 2) AS personal_fouls_avg_last_1, ROUND(AVG(personal_fouls) OVER w5, 2) AS personal_fouls_avg_last_5, ROUND(AVG(personal_fouls) OVER w10, 2) AS personal_fouls_avg_last_10, ROUND(AVG(flagrant_fouls) OVER w1, 2) AS flagrant_fouls_avg_last_1, ROUND(AVG(flagrant_fouls) OVER w5, 2) AS flagrant_fouls_avg_last_5, ROUND(AVG(flagrant_fouls) OVER w10, 2) AS flagrant_fouls_avg_last_10, ROUND(AVG(player_tech_fouls) OVER w1, 2) AS player_tech_fouls_avg_last_1, ROUND(AVG(player_tech_fouls) OVER w5, 2) AS player_tech_fouls_avg_last_5, ROUND(AVG(player_tech_fouls) OVER w10, 2) AS player_tech_fouls_avg_last_10, ROUND(AVG(team_tech_fouls) OVER w1, 2) AS team_tech_fouls_avg_last_1, ROUND(AVG(team_tech_fouls) OVER w5, 2) AS team_tech_fouls_avg_last_5, ROUND(AVG(team_tech_fouls) OVER w10, 2) AS team_tech_fouls_avg_last_10, ROUND(AVG(coach_tech_fouls) OVER w1, 2) AS coach_tech_fouls_avg_last_1, ROUND(AVG(coach_tech_fouls) OVER w5, 2) AS coach_tech_fouls_avg_last_5, ROUND(AVG(coach_tech_fouls) OVER w10, 2) AS coach_tech_fouls_avg_last_10, ROUND(AVG(ejections) OVER w1, 2) AS ejections_avg_last_1, ROUND(AVG(ejections) OVER w5, 2) AS ejections_avg_last_5, ROUND(AVG(ejections) OVER w10, 2) AS ejections_avg_last_10, ROUND(AVG(foulouts) OVER w1, 2) AS foulouts_avg_last_1, ROUND(AVG(foulouts) OVER w5, 2) AS foulouts_avg_last_5, ROUND(AVG(foulouts) OVER w10, 2) AS foulouts_avg_last_10, ROUND(AVG(score_delta) OVER w1, 2) AS score_delta_avg_last_1, ROUND(AVG(score_delta) OVER w5, 2) AS score_delta_avg_last_5, ROUND(AVG(score_delta) OVER w10, 2) AS score_delta_avg_last_10, ROUND(AVG(possessions) OVER w1, 2) AS possessions_avg_last_1, ROUND(AVG(possessions) OVER w5, 2) AS possessions_avg_last_5, ROUND(AVG(possessions) OVER w10, 2) AS possessions_avg_last_10, ROUND(AVG(opp_points) OVER w1, 2) AS opp_points_avg_last_1, ROUND(AVG(opp_points) OVER w5, 2) AS opp_points_avg_last_5, ROUND(AVG(opp_points) OVER w10, 2) AS opp_points_avg_last_10, ROUND(AVG(opp_fast_break_pts) OVER w1, 2) AS opp_fast_break_pts_avg_last_1, ROUND(AVG(opp_fast_break_pts) OVER w5, 2) AS opp_fast_break_pts_avg_last_5, ROUND(AVG(opp_fast_break_pts) OVER w10, 2) AS opp_fast_break_pts_avg_last_10, ROUND(AVG(opp_second_chance_pts) OVER w1, 2) AS opp_second_chance_pts_avg_last_1, ROUND(AVG(opp_second_chance_pts) OVER w5, 2) AS opp_second_chance_pts_avg_last_5, ROUND(AVG(opp_second_chance_pts) OVER w10, 2) AS opp_second_chance_pts_avg_last_10, ROUND(AVG(opp_field_goals_made) OVER w1, 2) AS opp_field_goals_made_avg_last_1, ROUND(AVG(opp_field_goals_made) OVER w5, 2) AS opp_field_goals_made_avg_last_5, ROUND(AVG(opp_field_goals_made) OVER w10, 2) AS opp_field_goals_made_avg_last_10, ROUND(AVG(opp_field_goals_att) OVER w1, 2) AS opp_field_goals_att_avg_last_1, ROUND(AVG(opp_field_goals_att) OVER w5, 2) AS opp_field_goals_att_avg_last_5, ROUND(AVG(opp_field_goals_att) OVER w10, 2) AS opp_field_goals_att_avg_last_10, ROUND(AVG(opp_field_goals_pct) OVER w1, 2) AS opp_field_goals_pct_avg_last_1, ROUND(AVG(opp_field_goals_pct) OVER w5, 2) AS opp_field_goals_pct_avg_last_5, ROUND(AVG(opp_field_goals_pct) OVER w10, 2) AS opp_field_goals_pct_avg_last_10, ROUND(AVG(opp_three_points_made) OVER w1, 2) AS opp_three_points_made_avg_last_1, ROUND(AVG(opp_three_points_made) OVER w5, 2) AS opp_three_points_made_avg_last_5, ROUND(AVG(opp_three_points_made) OVER w10, 2) AS opp_three_points_made_avg_last_10, ROUND(AVG(opp_three_points_att) OVER w1, 2) AS opp_three_points_att_avg_last_1, ROUND(AVG(opp_three_points_att) OVER w5, 2) AS opp_three_points_att_avg_last_5, ROUND(AVG(opp_three_points_att) OVER w10, 2) AS opp_three_points_att_avg_last_10, ROUND(AVG(opp_three_points_pct) OVER w1, 2) AS opp_three_points_pct_avg_last_1, ROUND(AVG(opp_three_points_pct) OVER w5, 2) AS opp_three_points_pct_avg_last_5, ROUND(AVG(opp_three_points_pct) OVER w10, 2) AS opp_three_points_pct_avg_last_10, ROUND(AVG(opp_two_points_made) OVER w1, 2) AS opp_two_points_made_avg_last_1, ROUND(AVG(opp_two_points_made) OVER w5, 2) AS opp_two_points_made_avg_last_5, ROUND(AVG(opp_two_points_made) OVER w10, 2) AS opp_two_points_made_avg_last_10, ROUND(AVG(opp_two_points_att) OVER w1, 2) AS opp_two_points_att_avg_last_1, ROUND(AVG(opp_two_points_att) OVER w5, 2) AS opp_two_points_att_avg_last_5, ROUND(AVG(opp_two_points_att) OVER w10, 2) AS opp_two_points_att_avg_last_10, ROUND(AVG(opp_two_points_pct) OVER w1, 2) AS opp_two_points_pct_avg_last_1, ROUND(AVG(opp_two_points_pct) OVER w5, 2) AS opp_two_points_pct_avg_last_5, ROUND(AVG(opp_two_points_pct) OVER w10, 2) AS opp_two_points_pct_avg_last_10, ROUND(AVG(opp_free_throws_made) OVER w1, 2) AS opp_free_throws_made_avg_last_1, ROUND(AVG(opp_free_throws_made) OVER w5, 2) AS opp_free_throws_made_avg_last_5, ROUND(AVG(opp_free_throws_made) OVER w10, 2) AS opp_free_throws_made_avg_last_10, ROUND(AVG(opp_free_throws_att) OVER w1, 2) AS opp_free_throws_att_avg_last_1, ROUND(AVG(opp_free_throws_att) OVER w5, 2) AS opp_free_throws_att_avg_last_5, ROUND(AVG(opp_free_throws_att) OVER w10, 2) AS opp_free_throws_att_avg_last_10, ROUND(AVG(opp_free_throws_pct) OVER w1, 2) AS opp_free_throws_pct_avg_last_1, ROUND(AVG(opp_free_throws_pct) OVER w5, 2) AS opp_free_throws_pct_avg_last_5, ROUND(AVG(opp_free_throws_pct) OVER w10, 2) AS opp_free_throws_pct_avg_last_10, ROUND(AVG(opp_ts_pct) OVER w1, 2) AS opp_ts_pct_avg_last_1, ROUND(AVG(opp_ts_pct) OVER w5, 2) AS opp_ts_pct_avg_last_5, ROUND(AVG(opp_ts_pct) OVER w10, 2) AS opp_ts_pct_avg_last_10, ROUND(AVG(opp_efg_pct) OVER w1, 2) AS opp_efg_pct_avg_last_1, ROUND(AVG(opp_efg_pct) OVER w5, 2) AS opp_efg_pct_avg_last_5, ROUND(AVG(opp_efg_pct) OVER w10, 2) AS opp_efg_pct_avg_last_10, ROUND(AVG(opp_rebounds) OVER w1, 2) AS opp_rebounds_avg_last_1, ROUND(AVG(opp_rebounds) OVER w5, 2) AS opp_rebounds_avg_last_5, ROUND(AVG(opp_rebounds) OVER w10, 2) AS opp_rebounds_avg_last_10, ROUND(AVG(opp_offensive_rebounds) OVER w1, 2) AS opp_offensive_rebounds_avg_last_1, ROUND(AVG(opp_offensive_rebounds) OVER w5, 2) AS opp_offensive_rebounds_avg_last_5, ROUND(AVG(opp_offensive_rebounds) OVER w10, 2) AS opp_offensive_rebounds_avg_last_10, ROUND(AVG(opp_defensive_rebounds) OVER w1, 2) AS opp_defensive_rebounds_avg_last_1, ROUND(AVG(opp_defensive_rebounds) OVER w5, 2) AS opp_defensive_rebounds_avg_last_5, ROUND(AVG(opp_defensive_rebounds) OVER w10, 2) AS opp_defensive_rebounds_avg_last_10, ROUND(AVG(opp_dreb_pct) OVER w1, 2) AS opp_dreb_pct_avg_last_1, ROUND(AVG(opp_dreb_pct) OVER w5, 2) AS opp_dreb_pct_avg_last_5, ROUND(AVG(opp_dreb_pct) OVER w10, 2) AS opp_dreb_pct_avg_last_10, ROUND(AVG(opp_oreb_pct) OVER w1, 2) AS opp_oreb_pct_avg_last_1, ROUND(AVG(opp_oreb_pct) OVER w5, 2) AS opp_oreb_pct_avg_last_5, ROUND(AVG(opp_oreb_pct) OVER w10, 2) AS opp_oreb_pct_avg_last_10, ROUND(AVG(opp_steals) OVER w1, 2) AS opp_steals_avg_last_1, ROUND(AVG(opp_steals) OVER w5, 2) AS opp_steals_avg_last_5, ROUND(AVG(opp_steals) OVER w10, 2) AS opp_steals_avg_last_10, ROUND(AVG(opp_blocks) OVER w1, 2) AS opp_blocks_avg_last_1, ROUND(AVG(opp_blocks) OVER w5, 2) AS opp_blocks_avg_last_5, ROUND(AVG(opp_blocks) OVER w10, 2) AS opp_blocks_avg_last_10, ROUND(AVG(opp_assists) OVER w1, 2) AS opp_assists_avg_last_1, ROUND(AVG(opp_assists) OVER w5, 2) AS opp_assists_avg_last_5, ROUND(AVG(opp_assists) OVER w10, 2) AS opp_assists_avg_last_10, ROUND(AVG(opp_turnovers) OVER w1, 2) AS opp_turnovers_avg_last_1, ROUND(AVG(opp_turnovers) OVER w5, 2) AS opp_turnovers_avg_last_5, ROUND(AVG(opp_turnovers) OVER w10, 2) AS opp_turnovers_avg_last_10, ROUND(AVG(opp_team_turnovers) OVER w1, 2) AS opp_team_turnovers_avg_last_1, ROUND(AVG(opp_team_turnovers) OVER w5, 2) AS opp_team_turnovers_avg_last_5, ROUND(AVG(opp_team_turnovers) OVER w10, 2) AS opp_team_turnovers_avg_last_10, ROUND(AVG(opp_points_off_turnovers) OVER w1, 2) AS opp_points_off_turnovers_avg_last_1, ROUND(AVG(opp_points_off_turnovers) OVER w5, 2) AS opp_points_off_turnovers_avg_last_5, ROUND(AVG(opp_points_off_turnovers) OVER w10, 2) AS opp_points_off_turnovers_avg_last_10, ROUND(AVG(opp_assists_turnover_ratio) OVER w1, 2) AS opp_assists_turnover_ratio_avg_last_1, ROUND(AVG(opp_assists_turnover_ratio) OVER w5, 2) AS opp_assists_turnover_ratio_avg_last_5, ROUND(AVG(opp_assists_turnover_ratio) OVER w10, 2) AS opp_assists_turnover_ratio_avg_last_10, ROUND(AVG(opp_ast_fgm_pct) OVER w1, 2) AS opp_ast_fgm_pct_avg_last_1, ROUND(AVG(opp_ast_fgm_pct) OVER w5, 2) AS opp_ast_fgm_pct_avg_last_5, ROUND(AVG(opp_ast_fgm_pct) OVER w10, 2) AS opp_ast_fgm_pct_avg_last_10, ROUND(AVG(opp_personal_fouls) OVER w1, 2) AS opp_personal_fouls_avg_last_1, ROUND(AVG(opp_personal_fouls) OVER w5, 2) AS opp_personal_fouls_avg_last_5, ROUND(AVG(opp_personal_fouls) OVER w10, 2) AS opp_personal_fouls_avg_last_10, ROUND(AVG(opp_flagrant_fouls) OVER w1, 2) AS opp_flagrant_fouls_avg_last_1, ROUND(AVG(opp_flagrant_fouls) OVER w5, 2) AS opp_flagrant_fouls_avg_last_5, ROUND(AVG(opp_flagrant_fouls) OVER w10, 2) AS opp_flagrant_fouls_avg_last_10, ROUND(AVG(opp_player_tech_fouls) OVER w1, 2) AS opp_player_tech_fouls_avg_last_1, ROUND(AVG(opp_player_tech_fouls) OVER w5, 2) AS opp_player_tech_fouls_avg_last_5, ROUND(AVG(opp_player_tech_fouls) OVER w10, 2) AS opp_player_tech_fouls_avg_last_10, ROUND(AVG(opp_team_tech_fouls) OVER w1, 2) AS opp_team_tech_fouls_avg_last_1, ROUND(AVG(opp_team_tech_fouls) OVER w5, 2) AS opp_team_tech_fouls_avg_last_5, ROUND(AVG(opp_team_tech_fouls) OVER w10, 2) AS opp_team_tech_fouls_avg_last_10, ROUND(AVG(opp_coach_tech_fouls) OVER w1, 2) AS opp_coach_tech_fouls_avg_last_1, ROUND(AVG(opp_coach_tech_fouls) OVER w5, 2) AS opp_coach_tech_fouls_avg_last_5, ROUND(AVG(opp_coach_tech_fouls) OVER w10, 2) AS opp_coach_tech_fouls_avg_last_10, ROUND(AVG(opp_ejections) OVER w1, 2) AS opp_ejections_avg_last_1, ROUND(AVG(opp_ejections) OVER w5, 2) AS opp_ejections_avg_last_5, ROUND(AVG(opp_ejections) OVER w10, 2) AS opp_ejections_avg_last_10, ROUND(AVG(opp_foulouts) OVER w1, 2) AS opp_foulouts_avg_last_1, ROUND(AVG(opp_foulouts) OVER w5, 2) AS opp_foulouts_avg_last_5, ROUND(AVG(opp_foulouts) OVER w10, 2) AS opp_foulouts_avg_last_10, ROUND(AVG(opp_score_delta) OVER w1, 2) AS opp_score_delta_avg_last_1, ROUND(AVG(opp_score_delta) OVER w5, 2) AS opp_score_delta_avg_last_5, ROUND(AVG(opp_score_delta) OVER w10, 2) AS opp_score_delta_avg_last_10, ROUND(AVG(opp_possessions) OVER w1, 2) AS opp_possessions_avg_last_1, ROUND(AVG(opp_possessions) OVER w5, 2) AS opp_possessions_avg_last_5, ROUND(AVG(opp_possessions) OVER w10, 2) AS opp_possessions_avg_last_10, ROUND(STDDEV_POP(points) OVER w5, 2) AS points_std_last_5, ROUND(STDDEV_POP(points) OVER w10, 2) AS points_std_last_10, ROUND(STDDEV_POP(fast_break_pts) OVER w5, 2) AS fast_break_pts_std_last_5, ROUND(STDDEV_POP(fast_break_pts) OVER w10, 2) AS fast_break_pts_std_last_10, ROUND(STDDEV_POP(second_chance_pts) OVER w5, 2) AS second_chance_pts_std_last_5, ROUND(STDDEV_POP(second_chance_pts) OVER w10, 2) AS second_chance_pts_std_last_10, ROUND(STDDEV_POP(field_goals_made) OVER w5, 2) AS field_goals_made_std_last_5, ROUND(STDDEV_POP(field_goals_made) OVER w10, 2) AS field_goals_made_std_last_10, ROUND(STDDEV_POP(field_goals_att) OVER w5, 2) AS field_goals_att_std_last_5, ROUND(STDDEV_POP(field_goals_att) OVER w10, 2) AS field_goals_att_std_last_10, ROUND(STDDEV_POP(field_goals_pct) OVER w5, 2) AS field_goals_pct_std_last_5, ROUND(STDDEV_POP(field_goals_pct) OVER w10, 2) AS field_goals_pct_std_last_10, ROUND(STDDEV_POP(three_points_made) OVER w5, 2) AS three_points_made_std_last_5, ROUND(STDDEV_POP(three_points_made) OVER w10, 2) AS three_points_made_std_last_10, ROUND(STDDEV_POP(three_points_att) OVER w5, 2) AS three_points_att_std_last_5, ROUND(STDDEV_POP(three_points_att) OVER w10, 2) AS three_points_att_std_last_10, ROUND(STDDEV_POP(three_points_pct) OVER w5, 2) AS three_points_pct_std_last_5, ROUND(STDDEV_POP(three_points_pct) OVER w10, 2) AS three_points_pct_std_last_10, ROUND(STDDEV_POP(two_points_made) OVER w5, 2) AS two_points_made_std_last_5, ROUND(STDDEV_POP(two_points_made) OVER w10, 2) AS two_points_made_std_last_10, ROUND(STDDEV_POP(two_points_att) OVER w5, 2) AS two_points_att_std_last_5, ROUND(STDDEV_POP(two_points_att) OVER w10, 2) AS two_points_att_std_last_10, ROUND(STDDEV_POP(two_points_pct) OVER w5, 2) AS two_points_pct_std_last_5, ROUND(STDDEV_POP(two_points_pct) OVER w10, 2) AS two_points_pct_std_last_10, ROUND(STDDEV_POP(free_throws_made) OVER w5, 2) AS free_throws_made_std_last_5, ROUND(STDDEV_POP(free_throws_made) OVER w10, 2) AS free_throws_made_std_last_10, ROUND(STDDEV_POP(free_throws_att) OVER w5, 2) AS free_throws_att_std_last_5, ROUND(STDDEV_POP(free_throws_att) OVER w10, 2) AS free_throws_att_std_last_10, ROUND(STDDEV_POP(free_throws_pct) OVER w5, 2) AS free_throws_pct_std_last_5, ROUND(STDDEV_POP(free_throws_pct) OVER w10, 2) AS free_throws_pct_std_last_10, ROUND(STDDEV_POP(ts_pct) OVER w5, 2) AS ts_pct_std_last_5, ROUND(STDDEV_POP(ts_pct) OVER w10, 2) AS ts_pct_std_last_10, ROUND(STDDEV_POP(efg_pct) OVER w5, 2) AS efg_pct_std_last_5, ROUND(STDDEV_POP(efg_pct) OVER w10, 2) AS efg_pct_std_last_10, ROUND(STDDEV_POP(rebounds) OVER w5, 2) AS rebounds_std_last_5, ROUND(STDDEV_POP(rebounds) OVER w10, 2) AS rebounds_std_last_10, ROUND(STDDEV_POP(offensive_rebounds) OVER w5, 2) AS offensive_rebounds_std_last_5, ROUND(STDDEV_POP(offensive_rebounds) OVER w10, 2) AS offensive_rebounds_std_last_10, ROUND(STDDEV_POP(defensive_rebounds) OVER w5, 2) AS defensive_rebounds_std_last_5, ROUND(STDDEV_POP(defensive_rebounds) OVER w10, 2) AS defensive_rebounds_std_last_10, ROUND(STDDEV_POP(dreb_pct) OVER w5, 2) AS dreb_pct_std_last_5, ROUND(STDDEV_POP(dreb_pct) OVER w10, 2) AS dreb_pct_std_last_10, ROUND(STDDEV_POP(oreb_pct) OVER w5, 2) AS oreb_pct_std_last_5, ROUND(STDDEV_POP(oreb_pct) OVER w10, 2) AS oreb_pct_std_last_10, ROUND(STDDEV_POP(steals) OVER w5, 2) AS steals_std_last_5, ROUND(STDDEV_POP(steals) OVER w10, 2) AS steals_std_last_10, ROUND(STDDEV_POP(blocks) OVER w5, 2) AS blocks_std_last_5, ROUND(STDDEV_POP(blocks) OVER w10, 2) AS blocks_std_last_10, ROUND(STDDEV_POP(assists) OVER w5, 2) AS assists_std_last_5, ROUND(STDDEV_POP(assists) OVER w10, 2) AS assists_std_last_10, ROUND(STDDEV_POP(turnovers) OVER w5, 2) AS turnovers_std_last_5, ROUND(STDDEV_POP(turnovers) OVER w10, 2) AS turnovers_std_last_10, ROUND(STDDEV_POP(team_turnovers) OVER w5, 2) AS team_turnovers_std_last_5, ROUND(STDDEV_POP(team_turnovers) OVER w10, 2) AS team_turnovers_std_last_10, ROUND(STDDEV_POP(points_off_turnovers) OVER w5, 2) AS points_off_turnovers_std_last_5, ROUND(STDDEV_POP(points_off_turnovers) OVER w10, 2) AS points_off_turnovers_std_last_10, ROUND(STDDEV_POP(assists_turnover_ratio) OVER w5, 2) AS assists_turnover_ratio_std_last_5, ROUND(STDDEV_POP(assists_turnover_ratio) OVER w10, 2) AS assists_turnover_ratio_std_last_10, ROUND(STDDEV_POP(ast_fgm_pct) OVER w5, 2) AS ast_fgm_pct_std_last_5, ROUND(STDDEV_POP(ast_fgm_pct) OVER w10, 2) AS ast_fgm_pct_std_last_10, ROUND(STDDEV_POP(personal_fouls) OVER w5, 2) AS personal_fouls_std_last_5, ROUND(STDDEV_POP(personal_fouls) OVER w10, 2) AS personal_fouls_std_last_10, ROUND(STDDEV_POP(flagrant_fouls) OVER w5, 2) AS flagrant_fouls_std_last_5, ROUND(STDDEV_POP(flagrant_fouls) OVER w10, 2) AS flagrant_fouls_std_last_10, ROUND(STDDEV_POP(player_tech_fouls) OVER w5, 2) AS player_tech_fouls_std_last_5, ROUND(STDDEV_POP(player_tech_fouls) OVER w10, 2) AS player_tech_fouls_std_last_10, ROUND(STDDEV_POP(team_tech_fouls) OVER w5, 2) AS team_tech_fouls_std_last_5, ROUND(STDDEV_POP(team_tech_fouls) OVER w10, 2) AS team_tech_fouls_std_last_10, ROUND(STDDEV_POP(coach_tech_fouls) OVER w5, 2) AS coach_tech_fouls_std_last_5, ROUND(STDDEV_POP(coach_tech_fouls) OVER w10, 2) AS coach_tech_fouls_std_last_10, ROUND(STDDEV_POP(ejections) OVER w5, 2) AS ejections_std_last_5, ROUND(STDDEV_POP(ejections) OVER w10, 2) AS ejections_std_last_10, ROUND(STDDEV_POP(foulouts) OVER w5, 2) AS foulouts_std_last_5, ROUND(STDDEV_POP(foulouts) OVER w10, 2) AS foulouts_std_last_10, ROUND(STDDEV_POP(score_delta) OVER w5, 2) AS score_delta_std_last_5, ROUND(STDDEV_POP(score_delta) OVER w10, 2) AS score_delta_std_last_10, ROUND(STDDEV_POP(possessions) OVER w5, 2) AS possessions_std_last_5, ROUND(STDDEV_POP(possessions) OVER w10, 2) AS possessions_std_last_10, ROUND(STDDEV_POP(opp_points) OVER w5, 2) AS opp_points_std_last_5, ROUND(STDDEV_POP(opp_points) OVER w10, 2) AS opp_points_std_last_10, ROUND(STDDEV_POP(opp_fast_break_pts) OVER w5, 2) AS opp_fast_break_pts_std_last_5, ROUND(STDDEV_POP(opp_fast_break_pts) OVER w10, 2) AS opp_fast_break_pts_std_last_10, ROUND(STDDEV_POP(opp_second_chance_pts) OVER w5, 2) AS opp_second_chance_pts_std_last_5, ROUND(STDDEV_POP(opp_second_chance_pts) OVER w10, 2) AS opp_second_chance_pts_std_last_10, ROUND(STDDEV_POP(opp_field_goals_made) OVER w5, 2) AS opp_field_goals_made_std_last_5, ROUND(STDDEV_POP(opp_field_goals_made) OVER w10, 2) AS opp_field_goals_made_std_last_10, ROUND(STDDEV_POP(opp_field_goals_att) OVER w5, 2) AS opp_field_goals_att_std_last_5, ROUND(STDDEV_POP(opp_field_goals_att) OVER w10, 2) AS opp_field_goals_att_std_last_10, ROUND(STDDEV_POP(opp_field_goals_pct) OVER w5, 2) AS opp_field_goals_pct_std_last_5, ROUND(STDDEV_POP(opp_field_goals_pct) OVER w10, 2) AS opp_field_goals_pct_std_last_10, ROUND(STDDEV_POP(opp_three_points_made) OVER w5, 2) AS opp_three_points_made_std_last_5, ROUND(STDDEV_POP(opp_three_points_made) OVER w10, 2) AS opp_three_points_made_std_last_10, ROUND(STDDEV_POP(opp_three_points_att) OVER w5, 2) AS opp_three_points_att_std_last_5, ROUND(STDDEV_POP(opp_three_points_att) OVER w10, 2) AS opp_three_points_att_std_last_10, ROUND(STDDEV_POP(opp_three_points_pct) OVER w5, 2) AS opp_three_points_pct_std_last_5, ROUND(STDDEV_POP(opp_three_points_pct) OVER w10, 2) AS opp_three_points_pct_std_last_10, ROUND(STDDEV_POP(opp_two_points_made) OVER w5, 2) AS opp_two_points_made_std_last_5, ROUND(STDDEV_POP(opp_two_points_made) OVER w10, 2) AS opp_two_points_made_std_last_10, ROUND(STDDEV_POP(opp_two_points_att) OVER w5, 2) AS opp_two_points_att_std_last_5, ROUND(STDDEV_POP(opp_two_points_att) OVER w10, 2) AS opp_two_points_att_std_last_10, ROUND(STDDEV_POP(opp_two_points_pct) OVER w5, 2) AS opp_two_points_pct_std_last_5, ROUND(STDDEV_POP(opp_two_points_pct) OVER w10, 2) AS opp_two_points_pct_std_last_10, ROUND(STDDEV_POP(opp_free_throws_made) OVER w5, 2) AS opp_free_throws_made_std_last_5, ROUND(STDDEV_POP(opp_free_throws_made) OVER w10, 2) AS opp_free_throws_made_std_last_10, ROUND(STDDEV_POP(opp_free_throws_att) OVER w5, 2) AS opp_free_throws_att_std_last_5, ROUND(STDDEV_POP(opp_free_throws_att) OVER w10, 2) AS opp_free_throws_att_std_last_10, ROUND(STDDEV_POP(opp_free_throws_pct) OVER w5, 2) AS opp_free_throws_pct_std_last_5, ROUND(STDDEV_POP(opp_free_throws_pct) OVER w10, 2) AS opp_free_throws_pct_std_last_10, ROUND(STDDEV_POP(opp_ts_pct) OVER w5, 2) AS opp_ts_pct_std_last_5, ROUND(STDDEV_POP(opp_ts_pct) OVER w10, 2) AS opp_ts_pct_std_last_10, ROUND(STDDEV_POP(opp_efg_pct) OVER w5, 2) AS opp_efg_pct_std_last_5, ROUND(STDDEV_POP(opp_efg_pct) OVER w10, 2) AS opp_efg_pct_std_last_10, ROUND(STDDEV_POP(opp_rebounds) OVER w5, 2) AS opp_rebounds_std_last_5, ROUND(STDDEV_POP(opp_rebounds) OVER w10, 2) AS opp_rebounds_std_last_10, ROUND(STDDEV_POP(opp_offensive_rebounds) OVER w5, 2) AS opp_offensive_rebounds_std_last_5, ROUND(STDDEV_POP(opp_offensive_rebounds) OVER w10, 2) AS opp_offensive_rebounds_std_last_10, ROUND(STDDEV_POP(opp_defensive_rebounds) OVER w5, 2) AS opp_defensive_rebounds_std_last_5, ROUND(STDDEV_POP(opp_defensive_rebounds) OVER w10, 2) AS opp_defensive_rebounds_std_last_10, ROUND(STDDEV_POP(opp_dreb_pct) OVER w5, 2) AS opp_dreb_pct_std_last_5, ROUND(STDDEV_POP(opp_dreb_pct) OVER w10, 2) AS opp_dreb_pct_std_last_10, ROUND(STDDEV_POP(opp_oreb_pct) OVER w5, 2) AS opp_oreb_pct_std_last_5, ROUND(STDDEV_POP(opp_oreb_pct) OVER w10, 2) AS opp_oreb_pct_std_last_10, ROUND(STDDEV_POP(opp_steals) OVER w5, 2) AS opp_steals_std_last_5, ROUND(STDDEV_POP(opp_steals) OVER w10, 2) AS opp_steals_std_last_10, ROUND(STDDEV_POP(opp_blocks) OVER w5, 2) AS opp_blocks_std_last_5, ROUND(STDDEV_POP(opp_blocks) OVER w10, 2) AS opp_blocks_std_last_10, ROUND(STDDEV_POP(opp_assists) OVER w5, 2) AS opp_assists_std_last_5, ROUND(STDDEV_POP(opp_assists) OVER w10, 2) AS opp_assists_std_last_10, ROUND(STDDEV_POP(opp_turnovers) OVER w5, 2) AS opp_turnovers_std_last_5, ROUND(STDDEV_POP(opp_turnovers) OVER w10, 2) AS opp_turnovers_std_last_10, ROUND(STDDEV_POP(opp_team_turnovers) OVER w5, 2) AS opp_team_turnovers_std_last_5, ROUND(STDDEV_POP(opp_team_turnovers) OVER w10, 2) AS opp_team_turnovers_std_last_10, ROUND(STDDEV_POP(opp_points_off_turnovers) OVER w5, 2) AS opp_points_off_turnovers_std_last_5, ROUND(STDDEV_POP(opp_points_off_turnovers) OVER w10, 2) AS opp_points_off_turnovers_std_last_10, ROUND(STDDEV_POP(opp_assists_turnover_ratio) OVER w5, 2) AS opp_assists_turnover_ratio_std_last_5, ROUND(STDDEV_POP(opp_assists_turnover_ratio) OVER w10, 2) AS opp_assists_turnover_ratio_std_last_10, ROUND(STDDEV_POP(opp_ast_fgm_pct) OVER w5, 2) AS opp_ast_fgm_pct_std_last_5, ROUND(STDDEV_POP(opp_ast_fgm_pct) OVER w10, 2) AS opp_ast_fgm_pct_std_last_10, ROUND(STDDEV_POP(opp_personal_fouls) OVER w5, 2) AS opp_personal_fouls_std_last_5, ROUND(STDDEV_POP(opp_personal_fouls) OVER w10, 2) AS opp_personal_fouls_std_last_10, ROUND(STDDEV_POP(opp_flagrant_fouls) OVER w5, 2) AS opp_flagrant_fouls_std_last_5, ROUND(STDDEV_POP(opp_flagrant_fouls) OVER w10, 2) AS opp_flagrant_fouls_std_last_10, ROUND(STDDEV_POP(opp_player_tech_fouls) OVER w5, 2) AS opp_player_tech_fouls_std_last_5, ROUND(STDDEV_POP(opp_player_tech_fouls) OVER w10, 2) AS opp_player_tech_fouls_std_last_10, ROUND(STDDEV_POP(opp_team_tech_fouls) OVER w5, 2) AS opp_team_tech_fouls_std_last_5, ROUND(STDDEV_POP(opp_team_tech_fouls) OVER w10, 2) AS opp_team_tech_fouls_std_last_10, ROUND(STDDEV_POP(opp_coach_tech_fouls) OVER w5, 2) AS opp_coach_tech_fouls_std_last_5, ROUND(STDDEV_POP(opp_coach_tech_fouls) OVER w10, 2) AS opp_coach_tech_fouls_std_last_10, ROUND(STDDEV_POP(opp_ejections) OVER w5, 2) AS opp_ejections_std_last_5, ROUND(STDDEV_POP(opp_ejections) OVER w10, 2) AS opp_ejections_std_last_10, ROUND(STDDEV_POP(opp_foulouts) OVER w5, 2) AS opp_foulouts_std_last_5, ROUND(STDDEV_POP(opp_foulouts) OVER w10, 2) AS opp_foulouts_std_last_10, ROUND(STDDEV_POP(opp_score_delta) OVER w5, 2) AS opp_score_delta_std_last_5, ROUND(STDDEV_POP(opp_score_delta) OVER w10, 2) AS opp_score_delta_std_last_10, ROUND(STDDEV_POP(opp_possessions) OVER w5, 2) AS opp_possessions_std_last_5, ROUND(STDDEV_POP(opp_possessions) OVER w10, 2) AS opp_possessions_std_last_10 FROM ( SELECT *, IF(win = true, 1, 0) as is_win, IF(win = false, 0, 1) as is_loss, ROUND(field_goals_att - offensive_rebounds + turnovers + 0.475 * free_throws_att, 2) as possessions, ROUND(opp_field_goals_att - opp_offensive_rebounds + opp_turnovers + 0.475 * opp_free_throws_att, 2) as opp_possessions, ROUND(points / (2 * (field_goals_att) + 0.475 * free_throws_att), 3) AS ts_pct, ROUND(opp_points / (2 * (opp_field_goals_att) + 0.475 * opp_free_throws_att), 3) AS opp_ts_pct, ROUND(((field_goals_made) + 0.5 * three_points_att) / (field_goals_att), 3) AS efg_pct, ROUND(((opp_field_goals_made) + 0.5 * opp_three_points_att) / (opp_field_goals_att), 3) AS opp_efg_pct, ROUND(defensive_rebounds / rebounds, 3) AS dreb_pct, ROUND(opp_defensive_rebounds / opp_rebounds, 3) AS opp_dreb_pct, ROUND(offensive_rebounds / rebounds, 3) AS oreb_pct, ROUND(opp_offensive_rebounds / opp_rebounds, 3) AS opp_oreb_pct, ROUND(assists / field_goals_made, 3) AS ast_fgm_pct, ROUND(opp_assists / opp_field_goals_made, 3) AS opp_ast_fgm_pct, (points_game - opp_points_game) as score_delta, (opp_points_game - points_game) as opp_score_delta FROM `bigquery-public-data.ncaa_basketball.mbb_teams_games_sr` WHERE field_goals_att > 0 AND opp_field_goals_att > 0 AND rebounds > 0 AND opp_rebounds > 0 AND field_goals_made > 0 AND opp_field_goals_made > 0 AND division_name = "NCAA Division I" AND opp_division_name = "NCAA Division I" AND scheduled_date > '2009-05-01' ) WINDOW w1 AS (partition by season, team_id order by scheduled_date ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING), w5 AS (partition by season, team_id order by scheduled_date ASC ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING), w10 AS (partition by season, team_id order by scheduled_date ASC ROWS BETWEEN 10 PRECEDING AND 1 PRECEDING) ORDER BY season, team_id