a****k 发帖数: 117 | 1 【 以下文字转载自 DataSciences 讨论区 】
发信人: andykk (andykk), 信区: DataSciences
标 题: 求教sqlzoo euro 2012 第十三题
发信站: BBS 未名空间站 (Sun Nov 23 20:53:17 2014, 美东)
题目在这:
http://www.sqlzoo.net/wiki/The_JOIN_operation
第十三题:
我的solution:
SELECT a.mdate, a.team1, SUM(CASE WHEN a.team1=b.teamid THEN 1 ELSE 0 END)
AS score1, a.team2, SUM(CASE WHEN a.team2=b.teamid THEN 1 ELSE 0 END) AS
score2 FROM game a LEFT JOIN goal b ON a.id = b.matchid GROUP BY b.matchid
ORDER BY a.mdate, a.id, a.team1, a.team2
这道题关键是不要漏掉0:0的比赛。我这个解法... 阅读全帖 |
|
a****k 发帖数: 117 | 2 题目在这:
http://www.sqlzoo.net/wiki/The_JOIN_operation
第十三题:
我的solution:
SELECT a.mdate, a.team1, SUM(CASE WHEN a.team1=b.teamid THEN 1 ELSE 0 END)
AS score1, a.team2, SUM(CASE WHEN a.team2=b.teamid THEN 1 ELSE 0 END) AS
score2 FROM game a LEFT JOIN goal b ON a.id = b.matchid GROUP BY b.matchid
ORDER BY a.mdate, a.id, a.team1, a.team2
这道题关键是不要漏掉0:0的比赛。我这个解法retrieve了24号的这场比赛,但为什么
27号的0:0没有retrieve出来? 有谁通过了sqlzoo的测试吗?多谢!
24 June 2012 ENG 0 ITA 0
27 June 2012 POR 0 ESP 0 |
|
m**********4 发帖数: 66 | 3 我刚开始学sql,在sqlzoo上被几个题目弄糊涂了,不知道是题目理解得不对,还是
syntax不对,出来的结果和正确答案就是不一样。
more join operation里的14和15题
1. 我写的如下。我的理解是同一个演员不可能在一部戏里有两个ord,计算一个演员的
ord次数,就可以知道他/她 starring roles的次数。这个query出来的行数比答案多。
select name from actor join casting
on actor.id=casting.actorid
group by name
having count(ord)>=30
order by name
2. 我写的如下。我的query出来的结果有几行不对,比如答案里有midnight express,
我的结果没有。
select t1.title, count(t3.actorid) from movie t1
join casting t3
on t1.id=t3.movieid
where t1.yr=1978
group by t1.title
order by count(t3.... 阅读全帖 |
|
|
|
|
|
|
u*******g 发帖数: 224 | 9 可以告诉 sqlzoo 里的每道题的答案在哪? 我按“Restore Default"为什么不显示
any code 呢? 做完一个题也不知道做得对不对。。。 |
|
|
n*****n 发帖数: 5277 | 11 用google搜一下,sqlzoo + 你要找的题目, 你仔细搜一下都能找到,很多人都把他们
的答案放到网上了 |
|
P********e 发帖数: 387 | 12 我也想说sqlzoo 如果想搞点难的,用sql写个recursion,请搜LinkedIn面ultimate
parent的问题
然后如果还嫌难度不够,可以试试自己用mac的环境捯饬一下PSQL
还有练习一下怎么样转换不同time zone的timestamp,从中extrac date,month,year
,week start day以及hour之类的,包你时间不知不觉过去了 |
|
l********6 发帖数: 129 | 13 如果是SQL语句 可以sqlzoo或者直接hackerrank
[在 horsejia (real) 的大作中提到:]
:最近面试,因为数据库的知识有限,黄了两个。想补一下数据库的知识,sql server
, 不一定要dba那样的水平,需要达到非dba里面的中高级水平,谢谢! |
|
|
|
j******g 发帖数: 63 | 16 结果跟标准答案不一样。。。
http://sqlzoo.net/wiki/Self_join
表格基本信息:
stops(id, name)
route(num,company,pos, stop)
1) 大体上company+num合在一起算是一条线路的unique key。
2) route.stop跟stop.id相合
题目:
Find the routes involving two buses that can go from Craiglockhart to
Sighthill.
Show the bus no. and company for the first bus, the name of the stop for the
transfer,
and the bus no. and company for the second bus.
给的提示:
Self-join twice to find buses that visit Craiglockhart and Sighthill, then
join those on matching stops.
我的sql... 阅读全帖 |
|
|
|
K*o 发帖数: 96 | 19 新手学SQL,在网上找题做。
碰到这题,想了好久都想不出怎么解。晚上睡觉都睡不好,想了好多方案都不对。网站
也没提供正确答案,只说错了。版上牛人多,能给指点下么。。要不然今天晚上又睡不
好了。。
题目在下面这个网页,是最后一题(第10题)
http://sqlzoo.net/wiki/Self_join |
|
b***i 发帖数: 3043 | 20 题目是sqlzoo.net的 4 Select within Select的第八题, 列出所有比本洲其他国家人
口多三倍以上的国家和所在洲。
终于做出来,用了4个select, 两次join, 但是有必要这么麻烦吗?
我的思路是,先选出来每个洲的最多人口,然后把这些洲的有多于最大人口1/3的国家
所在洲列出来,
然后再列出来不在上述表中的洲,和最大人口
最后把该国家和洲列出来。
做了一天,险些心脏病发作,幸亏今天踢了足球。 |
|
B*****g 发帖数: 34098 | 21 read question 10 about what is starring roles |
|
d*****8 发帖数: 3 | 22 我也做过这道题,把
SUM(CASE WHEN a.team1=b.teamid THEN 1 ELSE 0 END) AS Score1
改成
ISNULL(SUM(CASE WHEN a.team1=b.teamid THEN 1 ELSE 0 END ),0) AS Score1
加个ISNULL(query,0) |
|
a****k 发帖数: 117 | 23 多谢!你用的是sqlserver把?我用的是mysql, 加了coalesce,跟sqlserver里的ISNULL
功能一样。还是不对啊!
SELECT a.mdate, a.team1, COALESCE(SUM(CASE WHEN a.team1=b.teamid THEN 1 ELSE
0 END),0)
AS score1, a.team2, COALESCE(SUM(CASE WHEN a.team2=b.teamid THEN 1 ELSE 0
END), 0) AS
score2 FROM game a LEFT JOIN goal b ON a.id = b.matchid GROUP BY b.matchid
ORDER BY a.mdate, a.id, a.team1, a.team2 |
|
|
a*********0 发帖数: 41 | 25 select mdate, team1, sum(score1), team2, sum(score2) from (SELECT mdate,
team1,
CASE WHEN teamid=team1 THEN 1 ELSE 0 END score1,
team2,
CASE WHEN teamid = team2 THEN 1 ELSE 0 END score2
FROM game left outer JOIN goal ON matchid = id) tmp
group by tmp.mdate, tmp.team1,tmp.team2
order by tmp.mdate, tmp.team1,tmp.team2
我在外面多加了个select 在里面求sum。 得分为0的没有漏洞而且答案看起来没什么问
题,只是没有得到笑脸 |
|
O*********e 发帖数: 90 | 26 是不是这样?
select mdate,
team1,
(select count(gtime)from goal where teamid = team1 and matchid = id) as
score1,
team2,
(select count(gtime)from goal where teamid = team2 and matchid = id) as
score2
FROM game
order by mdate |
|
m******u 发帖数: 12400 | 27 不会用。在脑子里不能想出解决题目的逻辑关系(这里可以说算法吗?)
在sqlzoo上做题。车站的那组问题中,从一个站去另外一个站,用self join,我怎么
也想象不出来该怎么弄。
在球队比赛那一组问题里,简单地吧game表中的球队代码(teamID)用球队名来呈现(
就是jion team表),因为game表中有两支team,我就又不会join了。
大家说说,该怎么学习?谢谢。 |
|
m******u 发帖数: 12400 | 28 不会用。在脑子里不能想出解决题目的逻辑关系(这里可以说算法吗?)
在sqlzoo上做题。车站的那组问题中,从一个站去另外一个站,用self join,我怎么
也想象不出来该怎么弄。
在球队比赛那一组问题里,简单地吧game表中的球队代码(teamID)用球队名来呈现(
就是jion team表),因为game表中有两支team,我就又不会join了。
大家说说,该怎么学习?谢谢。 |
|
|
g***l 发帖数: 22 | 30 sqlzoo.net还不错,如果只是为了面试,准备一下基础的query就好了。 |
|
|
|
p****r 发帖数: 46 | 33 把Group By里的b.matchid 改成a.id就对了
我也不明白为什么你的结果里有24号的0:0结果却没有27号的。 |
|
|
j******g 发帖数: 63 | 35 【 以下文字转载自 JobHunting 讨论区 】
发信人: jameslhg (James), 信区: JobHunting
标 题: 求助一道sql问题,谢谢
发信站: BBS 未名空间站 (Tue Apr 25 20:02:05 2017, 美东)
结果跟标准答案不一样。。。
http://sqlzoo.net/wiki/Self_join
表格基本信息:
stops(id, name)
route(num,company,pos, stop)
1) 大体上company+num合在一起算是一条线路的unique key。
2) route.stop跟stop.id相合
题目:
Find the routes involving two buses that can go from Craiglockhart to
Sighthill.
Show the bus no. and company for the first bus, the name of the stop for the
transfer,
and the bus no. and company for th... 阅读全帖 |
|