2017-05-07 5 views
-1

나는 자신을 SQL을 가르치려고하고 다른 리소스 중에서 SQLZoo (http://sqlzoo.net)를 사용하고 있습니다. (오류 메시지에 따라 MariaDB를 사용하는 것으로 보입니다.)SQL에서 초보자 : 함께 CONCAT 및 라운드 사용

실습 중 하나는 유럽의 모든 국가 이름과 인구를 표시하도록 요청하는 것입니다 ('세계'라는 국가 이름, 인구, 대륙 및 일부 다른 것들은 모두 나열되어 있음), 인구를 독일 인구의 백분율로 표시하십시오. 그들은 거기에 CONCAT과 ROUND 함수를 언급 했으므로 소수점 이하 자리와 '%'기호를 원한다고 가정합니다.

내가 시도 : 나는 하나의 큰, 지방 엉망 단지 종류의 둥지 모든 것을 가질 것이라고 생각

SELECT name, 
(CONCAT 
(ROUND(100 * population/(SELECT population FROM world WHERE name= 'Germany'), 0), 
'%') 
FROM world 
WHERE continent= 'Europe' 

. 원래 SELECT의 가장 바깥 쪽 레이어는 계산 끝에서 '%'를 추가 한 다음 소수 자리를 면도 한 다음 실제 계산을 수행하는 것입니다. 간단히 나누어서 십진법으로 독일 인구의 비율로 인구를 계산합니다. 독일 인구의 100 배를 곱하여 소수 자리를 깎아 내고 백분율 기호를 쳐서 끝내십시오.

문제는이 메시지가 나에게 오류 메시지를 보내는 것입니다. 이 오류는 끝에 구문을 확인하도록 알려줍니다 (FROM world where continent = 'Europe').

누군가가이 문제가 어디에서 잘못 됐는지 알 수 있습니까?

+1

당신은'CONCAT()'전에 여분의 괄호가 있습니다. –

+0

작동중인 쿼리 버전에 대한 내 삭제 된 답변을 아래에서보십시오. –

+0

@GordonLinoff 괄호를 두드리려 고 시도했지만 여전히 작동하지 않습니다. –

답변

3

불균형 괄호 문제가 있습니다. 이 버전의 쿼리를 시도하십시오 :

SELECT 
    name, 
    CONCAT(ROUND(100 * population/
      (SELECT population FROM world WHERE name= 'Germany'), 0), '%') 
FROM world 
WHERE continent = 'Europe' 
+0

죄송합니다. 그거였다. 감사. –