由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Database版 - 求教sqlzoo euro 2012 第十三题 (转载)
相关主题
SQL Query Question请教set和select 的区别
MS SQL Group By Question请教大虾问题哈,包子谢哈
请教个SQL问题How to get other columns after UNION?
再问个 subquery的问题请教一个问题,急, 谢谢
怎么变 2D的table为3D 的吃了包子, 幹活了!
请问sql 有条件性的select columnsnot null in ms sql
change year format in Access by SQL query (转载)请教一个query 优化的问题(filter keyword)
oracle pl sql recursive functionUrgent SQL problem!
相关话题的讨论汇总
话题: end话题: when话题: else话题: case话题: sum
进入Database版参与讨论
1 (共1页)
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的比赛。我这个解法retrieve了24号的这场比赛,但为什么
27号的0:0没有retrieve出来? 有谁通过了sqlzoo的测试吗?多谢!
24 June 2012 ENG 0 ITA 0
27 June 2012 POR 0 ESP 0
d*****8
发帖数: 3
2
我也做过这道题,把
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
3
多谢!你用的是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

【在 d*****8 的大作中提到】
: 我也做过这道题,把
: 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)

d*****8
发帖数: 3
4
MYSQL 里面是不是用IFNULL?
a*********0
发帖数: 41
5
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
6
是不是这样?
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
1 (共1页)
进入Database版参与讨论
相关主题
Urgent SQL problem!怎么变 2D的table为3D 的
请教一个SQL 面试题请问sql 有条件性的select columns
请教一个SQL query该怎么写change year format in Access by SQL query (转载)
看了上面,我也来说说俺当年没答出的面试题。oracle pl sql recursive function
SQL Query Question请教set和select 的区别
MS SQL Group By Question请教大虾问题哈,包子谢哈
请教个SQL问题How to get other columns after UNION?
再问个 subquery的问题请教一个问题,急, 谢谢
相关话题的讨论汇总
话题: end话题: when话题: else话题: case话题: sum