.. _aggregator-anchor: Aggregators =========== SDQL aggregators are as follows: * **Average** is abbreviated as **A** * **Maximum** is abbreviated as **Max** * **Minimum** is abbreviated as **Min** * **Replace** is abbreviated as **R** * **Sum** is abbreviated as **S** * **Unique** is abbreviated as **U** * **Record** * **Streak** * **PearsonCorrelation** is abbreviated as **PC** * **StandardDeviation** is abbreviated as **SD** Aggregators ignore values which are None. So that Min([None,10,20]) = 10 and S([2,4,None]) = 6 The SDQL short cut *tA(points)* expands out to *Average(points\@team and season)*. This is read, "The average points for each team and each season." The text to the right of the *@* sign defines the conditions under which the average is taken and can be any valid SDQL condition. For example, to query on NBA teams at home with a home court season-to-date average score of 110 points or more, use the SDQL: site=home and Average(points@team and season and site=home) >= 110 To add the requirement that at least 20 home games had been played, use the SDQL: site=home and Average(points@team and season and site=home) >= 110 and Sum(1@team and season and site=home) >= 20 The general summative methods also allow comparison with league averages. To see how NBA teams have done when they are averaging 50% more three pointers than the league average and requiring that the team had played at least 30 games, use the SDQL: Average(three pointers made@team and season) > 1.5 * Average(three pointers made@season) and Sum(1@team and season) >= 30 To see how teams in the NBA have done after averaging at least 130 points in their last three at home, use the SDQL: Average(points@team and season and site=home,N=3) >= 130 The SDQL *Average(points\@team and season)* expands fully out to *Average(points\@team and season)[team and season]*. This is read "Average points for each team and season evaluated at that team and season". For example, to see how NFL teams have done in week 1 after losing 10 or more games in the previous season, use the SDQL: week=1 and Sum(L@team and season)[team and season-1] >= 10 Note that whatever conditions are to the right of the `@` sign must appear in the same order within the square brackets. To see how teams have done in week 1 after winning 8 games at home during the previous regular season, use the SDQL: week=1 and Sum(W@team and season and site=home and playoffs=0)[team and season-1 and site=home and playoffs=0] = 8 The Maximum and Minumum methods are useful for checking a team's recent performance. To see how NBA teams have done after scoring at least 100 points 20 games in a row, use the SDQL: Minimum(points@team and season,N=20) >= 100 To see how NBA teams have done after their opponent scored fewer than 90 points 10 games in a row, use the SDQL: Maximum(o:points@o:team and o:season,N=10) < 90 To isolate NHL games where the total is less than 6 and in the team's last 4 games when the total was less than 6 there were at least 3 goals scored in the first period, use the SDQL: 3 <= Min( period scores[0] + o:period scores[0] @ team and season and total < 6, N = 4) and total < 6 The Record aggregator takes either an arguments of just the margin, or a tuple of (margin,odds,wager). To see the straight up record of each team in 2021, use the SDQL: Record(points-o:points),R(team)@season=2021 and team| To see each team's ATS record, including the total amount invested, net profit, and average odds, use the SDQL: Record((points+line-o:points,odds,1)),R(team)@season=2021 and team| (Where it is assumed that your database has "odds" as a parameter and you are wagering 1 unit.) The Streak aggregator returns the current streak of any SDQL term. To see how teams have performed SU after winning by double digits in their last 4+ games, use the SDQL: Record(points-o:points)@Streak(points>=o:points+10@team and season)>=4 To see the average points scored by teams after scoring over 120 their last 5, use the SDQL: A(points)@Streak(points>120@team and season)>=5 The StandardDeviation aggregator returns the standard deviation of any SDQL term. To see the standard deviation of the ATS margin for each NBA team, use the SDQL: StandardDeviation(points+line-o:points)@team The PearsonCorrelation aggregator returns the correlation bewteen any two SDQL terms. To see the correlation between hits and runs for each MLB team, use the SDQL: PearsonCorrelation((hits,runs))@team The Sum aggregator defaults to zero while all others default to None. To see how MLB teams have performed on their first home game of the season, use either of the SDQL conditions: tS(1@H) = 0 tA(1@H) is None running ------- A summative is turned into a running-summative by using any math outside of the summative. To see the date and running average of points for the Patriots in 2017, use the SDQL: date,1*A(points)@team=Patriots and season=2017