把各大洲放在正确的位置......
- 大洋洲成为澳大拉西亚
- 欧亚大陆和土耳其的国家访问欧洲/亚洲
- 以'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得到的结果是“错误答案。有些数据不正确。”。
答案 0 :(得分:10)
这对我有用。不要问我为什么必须使用ORDER BY(没有它就没有用)。
SELECT name, continent,
CASE WHEN continent='Oceania' THEN 'Australasia'
WHEN continent = 'Eurasia' 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 ORDER BY name
答案 1 :(得分:3)
看起来是他们系统中的一个错误,除非我读错了这个问题:
SELECT name, continent,
CASE WHEN continent='Oceania' THEN 'Australasia'
WHEN continent IN ('Eurasia') 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
order by name
如果您按“名称顺序”添加,则会使用上述查询给出正确答案。但是,如果您不包含订单,则将其标记为不正确。至于为什么我不确定。
答案 2 :(得分:3)
以下代码可以解决您的问题:
SELECT name AS Country, continent as Continent,
CASE WHEN continent='Oceania' THEN 'Australasia'
WHEN continent = 'Eurasia' 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 AS "New Continent"
FROM world
WHERE tld IN ('.ag','.ba','.bb','.ca','.cn','.nz','.ru','.tr','.uk')
ORDER BY Country;
答案 3 :(得分:2)
这也有效。使用土耳其的OR语句并重命名为新列
SELECT name,continent,
CASE
WHEN continent='Oceania' THEN 'Australasia'
WHEN continent='Eurasia' OR 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 as 'new continent name'
FROM world
ORDER BY name
答案 4 :(得分:2)
订单无关紧要,但网站的答案(当您回答错误时)表明输出应按国家/地区名称排序。
SELECT name AS Country, continent as Continent,
CASE WHEN continent='Oceania' THEN 'Australasia'
WHEN continent IN ('Eurasia', '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 AS "New Continent"
FROM world
ORDER BY Country;
答案 5 :(得分:1)
我尝试过,并且使用'OR'
代替土耳其而不是制作新的声明并不会帮助自己。
同意这不正确,可能是页面sqlzoo
的错误。
但与'ORDER BY name'
一起使用时,两种方式都是正确的。
列的名称并不重要,您可以将它们命名为YouLikeItToBe'。
很明显,sqlzoo
会检查表中的内容,计数以及它的顺序,但是,不会保留顺序。