Подсчет ошибок подзапроса Статистика штрафных бросков - PullRequest
0 голосов
/ 24 января 2020

пытается включить запрос с заголовком «Произведены штрафные броски» в качестве подзапроса в запрос под заголовком «FreeThrowPercByGame», но появляется ошибка. Оба работают независимо друг от друга в Google Big Query. Спасибо.

--free throws made
  select  scheduled_date,
        home_market,
    away_market,
    team_name,
    count( *)FreeThrowMade,
    FROM
    `bigquery-public-data.ncaa_basketball.mbb_pbp_sr` gamestbl
    WHERE season IN (2017)
    AND (home_market IN ("Ohio State")
      OR away_market IN ("Ohio State"))
    AND event_type IN ("freethrowmade")
    AND period in (1,2)
    AND team_name IN ("Buckeyes")
    group by 
    scheduled_date,
        home_market,
    away_market,
    team_name
      ORDER BY
    scheduled_date asc


--FreeThrowPercByGame
    select
    scheduled_date,
    home_market,
    away_market,
    team_name,
    count(event_type IN ("freethrowmiss","freethrowmade"))NoOfFTAttempts
    FROM
    `bigquery-public-data.ncaa_basketball.mbb_pbp_sr` gamestbl
    WHERE
    season IN (2017)
    AND (home_market IN ("Ohio State")
      OR away_market IN ("Ohio State"))
    AND event_type IN ("freethrowmiss","freethrowmade")
    AND period in (1,2)
    AND team_name IN ("Buckeyes")
    group by 
    scheduled_date,
        home_market,
    away_market,
    team_name
      ORDER BY
    scheduled_date asc

Ответы [ 3 ]

0 голосов
/ 25 января 2020

Я думаю, вы просто хотите условную агрегацию, что особенно просто при использовании countif():

select scheduled_date, home_market, away_market, team_name,
       countif(event_type in ('freethrowmade')) / nullif(countif(event_type in ('freethrowmade', 'freethrowmiss')), 0) as ratio
from `bigquery-public-data.ncaa_basketball.mbb_pbp_sr` gamestbl
where season in (2017) and
      'Ohio State' in (home_market, away_market) and
      period in (1,2) and
      team_name in ('Buckeyes')
group scheduled_date, home_market, away_market, team_name
order by scheduled_date asc
0 голосов
/ 25 января 2020

Ниже для BigQuery Standard SQL и представляет собой простое объединение ваших уже работающих запросов в один (рабочий)

#standardSQL
SELECT
  scheduled_date,
  home_market,
  away_market,
  team_name,
  COUNTIF(event_type = 'freethrowmade') FreeThrowMade,
  COUNT(1) NoOfFTAttempts
FROM `bigquery-public-data.ncaa_basketball.mbb_pbp_sr` gamestbl
WHERE season IN (2017)
AND (
  home_market IN ("Ohio State")
  OR away_market IN ("Ohio State")
  )
AND event_type IN ("freethrowmiss","freethrowmade")
AND period IN (1,2)
GROUP BY 
  scheduled_date,
  home_market,
  away_market,
  team_name
ORDER BY scheduled_date ASC
0 голосов
/ 24 января 2020

Если вы хотите, чтобы они были объединены, рассмотрите что-то вроде следующего:

with data as (
  select scheduled_date,home_market,away_market,team_name,
         count(distinct case when event_type in('freethrowmiss','freethrowmade') then event_id else null end) as attempts, 
         count(distinct case when event_type in('freethrowmade') then event_id else null end) as makes
  from `bigquery-public-data.ncaa_basketball.mbb_pbp_sr`
  where season = 2017 and period in(1,2) AND (home_market = "Ohio State" or away_market = 'Ohio State') and team_name = 'Buckeyes'
  group by 1,2,3,4
)
select *, safe_divide(makes,attempts) as freethrowpercentage
from data
order by 1 asc
...