【发布时间】:2015-05-12 15:41:36
【问题描述】:
把大陆放在正确的位置......
- 大洋洲成为大洋洲
- 欧亚大陆和土耳其国家去欧洲/亚洲
- 以“B”开头的加勒比岛屿前往北美,其他加勒比岛屿前往南美
显示名称、原大陆和新大陆的所有 国家。
我的解决方案:
SELECT name, continent,
CASE WHEN continent='Oceania' THEN 'Australasia'
WHEN continent IN ('Europe', 'Asia') THEN 'Europe/Asia'
WHEN name='Turkey' THEN 'Europe/Asia'
WHEN continent='Caribbean' AND name LIKE 'B%' THEN 'North America'
WHEN continent='Caribbean' AND name NOT LIKE 'B%' THEN 'South America'
ELSE continent END
FROM world
我从 sqlzoo 得到的结果是“错误答案。某些数据不正确。”。
【问题讨论】:
-
问题是
Eurasia,你的答案是IN ('Europe', 'Asia')。就个人而言,我不认为土耳其包含任何国家。 -
我同意@jodrell 的观点(试图预测 sqlzoo 预期的正确答案...)好消息是您的 SQL 是 100% 可靠的,问题在于您卡住的字符串sqlzoo 不喜欢的地方。
-
@Jodrell,我现在试过了,但它也不起作用。原始表不应该在大陆列中包含“欧亚大陆”。
-
我怀疑规范不明确,因此造成混淆。
-
@systemovich:不过它确实包含欧亚大陆。试试这个看看他们:
SELECT name, continent FROM world where continent='Eurasia'
标签: sql case sql-like case-when