Alexander_89

Test_2

Apr 5th, 2023
624
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.81 KB | None | 0 0
  1. --в данных нет информации, в какой команде какой игрок играет
  2. --будем считать, что, играя за свою команду, игрок сделал максимальное количество питчей
  3. WITH t1 AS (
  4.     SELECT pitcherId, team
  5.     FROM
  6.         (SELECT DISTINCT pitcherId, team, cc, MAX(cc) OVER (PARTITION BY pitcherId) ccc
  7.         FROM(
  8.             --считаем, сколько игроки сделали питчей
  9.             --для выездных матчей
  10.             SELECT DISTINCT pitcherId, awayTeamName AS team, COUNT(awayTeamName) cc
  11.             FROM bigquery-public-data.baseball.games_wide
  12.             WHERE pitcherId != ''
  13.             --не будем считать наицональную лигу командой
  14.             AND awayTeamName != 'National League'
  15.             GROUP BY pitcherId,team
  16.             UNION ALL
  17.             --для домашних матчей
  18.             SELECT DISTINCT pitcherId, homeTeamName AS team, COUNT(awayTeamName) cc
  19.             FROM bigquery-public-data.baseball.games_wide
  20.             WHERE pitcherId != ''
  21.             AND awayTeamName != 'American League'
  22.             --не будем считать американскую лигу командой
  23.             GROUP BY pitcherId,team
  24.             )
  25.         )
  26.     WHERE cc=ccc
  27.     --находим максимум питчей, которые сделал каждый игрок во время игр
  28.     --исходя из этого, определяем команду каждого игрока
  29.     ORDER BY pitcherId
  30. ),
  31. t2 AS
  32. --находим максимальную скорость питча для каждого питчера
  33.     (SELECT pitcherId,pitcherFirstName, pitcherLastName, MAX(maxspeed) ms
  34.     FROM
  35.         (SELECT pitcherId,pitcherFirstName, pitcherLastName, MAX(pitchSpeed) maxspeed
  36.         FROM bigquery-public-data.baseball.games_wide
  37.         --для регулярных игр сезона
  38.         WHERE pitcherId != ''
  39.         GROUP BY pitcherId,pitcherFirstName, pitcherLastName
  40.         UNION ALL
  41.         SELECT pitcherId,pitcherFirstName, pitcherLastName, MAX(pitchSpeed) maxspeed
  42.         FROM bigquery-public-data.baseball.games_post_wide
  43.         --для дополнительных игр сезона
  44.         WHERE pitcherId != ''
  45.         GROUP BY pitcherId,pitcherFirstName, pitcherLastName
  46.         )
  47.     GROUP BY pitcherId,pitcherFirstName, pitcherLastName),
  48. t3 AS (
  49.     --соединием информацию о скорости питча и команде для игроков
  50.     SELECT t2.pitcherFirstName, t2.pitcherLastName, t1.team, t2.ms, MAX(t2.ms) OVER(PARTITION BY t1.team) mms
  51.     FROM t1
  52.     JOIN t2 ON t1.pitcherId = t2.pitcherId
  53.     )
  54. --находим скорость максимального питча для каждой команды, добавляем имя игрока
  55. SELECT pitcherFirstName, pitcherLastName, team, mms
  56. FROM t3
  57. WHERE ms=mms
Advertisement
Add Comment
Please, Sign In to add comment