SQL Exercise: Find the number of penalty shots taken by the teams
26. From the following table, write a SQL query to count the number of penalty shots taken by each team. Return country name, number of shots as "Number of Shots".
Sample table: soccer_country
country_id | country_abbr | country_name
------------+--------------+---------------------
1201 | ALB | Albania
1202 | AUT | Austria
1203 | BEL | Belgium
1204 | CRO | Croatia
1205 | CZE | Czech Republic
1206 | ENG | England
1207 | FRA | France
1208 | GER | Germany
1209 | HUN | Hungary
1210 | ISL | Iceland
1211 | ITA | Italy
1212 | NIR | Northern Ireland
1213 | POL | Poland
1214 | POR | Portugal
1215 | IRL | Republic of Ireland
1216 | ROU | Romania
1217 | RUS | Russia
1218 | SVK | Slovakia
1219 | ESP | Spain
1220 | SWE | Sweden
1221 | SUI | Switzerland
1222 | TUR | Turkey
1223 | UKR | Ukraine
1224 | WAL | Wales
1225 | SLO | Slovenia
1226 | NED | Netherlands
1227 | SRB | Serbia
1228 | SCO | Scotland
1229 | NOR | Norway
Sample table: penalty_shootout
kick_id | match_no | team_id | player_id | score_goal | kick_no
---------+----------+---------+-----------+------------+---------
1 | 37 | 1221 | 160467 | Y | 1
2 | 37 | 1213 | 160297 | Y | 2
3 | 37 | 1221 | 160477 | N | 3
4 | 37 | 1213 | 160298 | Y | 4
5 | 37 | 1221 | 160476 | Y | 5
6 | 37 | 1213 | 160281 | Y | 6
7 | 37 | 1221 | 160470 | Y | 7
8 | 37 | 1213 | 160287 | Y | 8
9 | 37 | 1221 | 160469 | Y | 9
10 | 37 | 1213 | 160291 | Y | 10
11 | 45 | 1214 | 160322 | Y | 1
12 | 45 | 1213 | 160297 | Y | 2
13 | 45 | 1214 | 160316 | Y | 3
14 | 45 | 1213 | 160298 | Y | 4
15 | 45 | 1214 | 160314 | Y | 5
16 | 45 | 1213 | 160281 | Y | 6
17 | 45 | 1214 | 160320 | Y | 7
18 | 45 | 1213 | 160287 | N | 8
19 | 45 | 1214 | 160321 | Y | 9
20 | 47 | 1211 | 160251 | Y | 1
21 | 47 | 1208 | 160176 | Y | 2
22 | 47 | 1211 | 160253 | N | 3
23 | 47 | 1208 | 160183 | N | 4
24 | 47 | 1211 | 160234 | Y | 5
25 | 47 | 1208 | 160177 | N | 6
26 | 47 | 1211 | 160252 | N | 7
27 | 47 | 1208 | 160173 | Y | 8
28 | 47 | 1211 | 160235 | N | 9
29 | 47 | 1208 | 160180 | N | 10
30 | 47 | 1211 | 160244 | Y | 11
31 | 47 | 1208 | 160168 | Y | 12
32 | 47 | 1211 | 160246 | Y | 13
33 | 47 | 1208 | 160169 | Y | 14
34 | 47 | 1211 | 160238 | Y | 15
35 | 47 | 1208 | 160165 | Y | 16
36 | 47 | 1211 | 160237 | N | 17
37 | 47 | 1208 | 160166 | Y | 18
Sample Solution:
SQL Code:
-- This SQL query calculates the count of penalty shots for each country participating in soccer_country.
SELECT a.country_name, COUNT(b.*) as "Number of Shots"
-- Selects the country name and the count of penalty shots for each group, aliasing the count as "Number of Shots".
FROM soccer_country a, penalty_shootout b
-- Specifies the tables involved in the query, using aliases 'a' for 'soccer_country' and 'b' for 'penalty_shootout'.
WHERE b.team_id = a.country_id
-- Connects rows in 'penalty_shootout' where 'team_id' matches 'country_id' in 'soccer_country'.
GROUP BY a.country_name;
-- Groups the results by the 'country_name' column from 'soccer_country'.
Sample Output:
country_name | Number of Shots --------------+----------------- Poland | 9 Italy | 9 Germany | 9 Portugal | 5 Switzerland | 5 (5 rows)
Code Explanation:
The said query in SQL that retrieves the number of penalty shootout shots taken by each country.
This query counts the number of rows from the penalty_shootout table and the "Number of Shots" is used as a alias to the count result.
The join condition between the two tables, linking the team_id column from penalty_shootout with the country_id column from soccer_country.
The GROUP BY clause groups the results by country_name, so that the count is calculated for each unique country in the soccer_country table.
Go to:
PREV : List of players with shot numbers in penalty shootouts.
NEXT : Within each half of play, find the number of bookings.
Practice Online
Sample Database: soccer

Query Visualization:
Duration:

Rows:

Cost:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
