sqlzoo练习系列(十)——合并表格之足球赛数据库

 【Tips】

  • sqlzoo官网链接:https://sqlzoo.net/wiki/SQL_Tutorial/zh
  • 每个系列开头介绍所用表及其信息
  • 每道题均测试通过,含有题目描述、代码和结果
  • 题目为自己简写,最好在官网查看具体题目
  • 部分测试结果不完整,仅为一部分截图

合并表格之足球赛数据库练习链接:https://sqlzoo.net/wiki/The_JOIN_operation/zh

所用的表game,goal,eteam

        


  

1.列出球员姓氏为'Bender'的入球数据

SELECT matchid,player FROM goal 
WHERE teamid='GER'

2.查询1012相关

SELECT  id,stadium,team1,team2
FROM game
WHERE id=1012

3.显示每一个德国入球的球员名,队伍名,场馆和日期

SELECT goal.player,goal.teamid,game.stadium,game.mdate
FROM game JOIN goal ON (id=matchid)
WHERE teamid='GER'

4.列出球员名字Mario相关

SELECT team1,team2,player
FROM game JOIN goal ON (id=matchid)
WHERE player LIKE 'Mario%'

5.列出每场球赛中首10分钟有入球的相关信息

SELECT player, teamid, coach,gtime
FROM goal JOIN eteam on teamid=id
WHERE gtime<=10

6.列出'Fernando Santos'相关

SELECT mdate,teamname
FROM game JOIN eteam ON (team1=eteam.id)
WHERE coach='Fernando Santos'

7.列出场馆 'National Stadium, Warsaw的入球球员

SELECT player
FROM goal JOIN game ON id=matchid
WHERE stadium='National Stadium, Warsaw'

8.找出非德国球员的入球

SELECT DISTINCT player FROM game JOIN goal
ON id=matchid
WHERE (team1='GER' OR team2='GER')
AND goal.teamid != 'GER'

9.列出队伍名称和该队的入球总数

SELECT teamname,COUNT(player)
FROM eteam JOIN goal ON id=teamid
GROUP BY teamname

10.列出场馆名和该场馆的入球数字

SELECT stadium,COUNT(player)
FROM game JOIN goal ON id=matchid
GROUP BY stadium

11.找出'POL'相关

SELECT matchid,mdate,COUNT(player)
FROM game JOIN goal ON matchid = id 
WHERE (team1 = 'POL' OR team2 = 'POL')
GROUP BY matchid,mdate

12.列出德国'GER'相关

SELECT matchid,mdate,COUNT(player)
FROM game JOIN goal ON id=matchid
WHERE (team1='GER' OR team2='GER')
AND teamid='GER'
GROUP BY matchid,mdate

13.列出不同队伍的总得分情况

SELECT mdate,
team1,
SUM(CASE WHEN teamid=team1 THEN 1 ELSE 0 END) AS score1,
team2,
SUM(CASE WHEN teamid=team2 THEN 1 ELSE 0 END) AS score2
FROM game LEFT JOIN goal ON matchid = id
GROUP BY mdate,matchid,team1,team2

原文地址:https://www.cnblogs.com/tuzinn/p/13879979.html