sqlzoo练习--JION

这里涉及三个表格,表名分别是:game;goal;eteam.
其中表中含有的列分别为:game(id,mdate,stadium,team1,team2);
goal(matchid,teamid,player,gtime);
eteam(id,teamname,coach);
1.Modify it to show the matchid and player name for all goals scored by Germany. To identify German players, check for: teamid = ‘GER’

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

2.Show id, stadium, team1, team2 for just game 1012

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

3.Modify it to show the player, teamid, stadium and mdate for every German goal.

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

4.Show the team1, team2 and player for every goal scored by a player called Mario player LIKE ‘Mario%’

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

5.Show player, teamid, coach, gtime for all goals scored in the first 10 minutes gtime<=10

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

6.List the the dates of the matches and the name of the team in which ‘Fernando Santos’ was the team1 coach.

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

7.List the player for every goal scored in a game where the stadium was ‘National Stadium, Warsaw’

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

8.Instead show the name of all players who scored a goal against Germany.Show teamname and the total number of goals scored.

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

9.Show teamname and the total number of goals scored.

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

10.Show the stadium and the number of goals scored in each stadium.

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

11.For every match involving ‘POL’, show the matchid, date and the number of goals scored.

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

12.For every match where ‘GER’ scored, show matchid, match date and the number of goals scored by ‘GER’

SELECT goal.matchid,game.mdate,COUNT(goal.teamid)
  FROM game JOIN goal 
    ON game.id=goal.matchid
WHERE goal.teamid='GER'
GROUP BY goal.matchid,game.mdate

13.Sort your result by mdate, matchid, team1 and team2.(该题花了一点点时间,涉及外联结和CASE表达式这两个知识点)

SELECT mdate,team1,SUM(CASE WHEN teamid=team1 THEN 1 ELSE 0  END) score1,     
       team2, SUM(CASE WHEN teamid=team2  THEN 1ELSE 0 END) score2
 FROM game LEFT JOIN goal 
   ON goal.matchid = game.id 
GROUP BY mdate, matchid,team1,team2 
ORDER BY mdate, matchid DESC
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值