Data Manipulation in SQL
Mona Khalil
Data Scientist, Greenhouse Software
SELECT COUNT(id) FROM match;
12837
SELECT
season,
COUNT(id) AS matches,
12837 as total_matches
FROM match
GROUP BY season;
| season | matches | total_matches |
|-----------|---------|---------------|
| 2011/2012 | 3220 | 12837 |
| 2012/2013 | 3260 | 12837 |
| 2013/2014 | 3032 | 12837 |
| 2014/2015 | 3325 | 12837 |
SELECT
season,
COUNT(id) AS matches,
(SELECT COUNT(id) FROM match) as total_matches
FROM match
GROUP BY season;
| season | matches | total_matches |
|-----------|---------|---------------|
| 2011/2012 | 3220 | 12837 |
| 2012/2013 | 3260 | 12837 |
| 2013/2014 | 3032 | 12837 |
| 2014/2015 | 3325 | 12837 |
SELECT AVG(home_goal + away_goal)
FROM match
WHERE season = '2011/2012';
2.72
SELECT
date,
(home_goal + away_goal) AS goals,
(home_goal + away_goal) - 2.72 AS diff
FROM match
WHERE season = '2011/2012';
SELECT
date,
(home_goal + away_goal) AS goals,
(home_goal + away_goal) -
(SELECT AVG(home_goal + away_goal)
FROM match
WHERE season = '2011/2012') AS diff
FROM match
WHERE season = '2011/2012';
| date | goals | diff |
|------------|-------|-------------------|
| 2011-07-29 | 3 | 0.28354037267081 |
| 2011-07-30 | 2 | -0.71645962732919 |
| 2011-07-30 | 4 | 1.28354037267081 |
| 2011-07-30 | 1 | -1.71645962732919 |
Need to return a SINGLE value
Make sure you have all filters in the right places
SELECT
date,
(home_goal + away_goal) AS goals,
(home_goal + away_goal) -
(SELECT AVG(home_goal + away_goal)
FROM match
WHERE season = '2011/2012') AS diff
FROM match
WHERE season = '2011/2012';
Data Manipulation in SQL