작성
·
160
1
실습문제 19번에서 원하는 답을 얻기 위해서는
SELECT country, count(*)
FROM Customers
group by country
;
이렇게 코드를 작성하면 되는데요,,,
아래처럼 group by 뒤 항목에 따옴표('')를 넣게 되면, 다른 결과가 나옵니다. 무슨 의미일까요?
SELECT country, count(*)
FROM Customers
group by 'country'
;
답변 1
0
안녕하세요!
country는 컴퓨터가 변수(데이터를 담는 그릇)으로 인식하지만, 'country'는 문자열 데이터 'country'그 자체로 인식하기 때문입니다. 공유해주신 쿼리로 실행을 해보면 아마 country 해당 부분에 'Germany'만 나올텐데요, 이는 CustomerID가 가장 빠른 1번 회원이 'Germany'이기 떄문에 그루핑이 가장 먼저된 Germany만 인식하고 있기 때문이에요.
좀 더 쉬운 이해를 돕기 위해 아래의 두 쿼리를 실행해보시면 좋을 것 같은데요,
# country라는 문자열이 customers 회원 수만큼 반복됩니다. 91개.
select 'country'
from customers
;
# country라는 문자열을 기준으로 country를 가져오고 숫자를 카운트합니다. country라는 문자열 자체는 전체중에 유니크하게 1건뿐이므로 결과는 row가 1줄로만 나오게됩니다.
select 'country', country, count(*)
from Customers
group by 'country'
;
위 쿼리에서 저희가 컴퓨터에게 그루핑을 하기 위해서 준 값은 'country' 였기 때문에, 해당 'country'라는 1개의 기준에 대해서 그루핑을 하게 되어버립니다.
반면에 저희가 기존에 실행해왔던 country (''로 감싸지 않은) 로 작성하게 되면 컴퓨터는 이를 변수로 인식하게되어서 테이블 내에 있는 Germany도 가져오고, Mexico도 가져오고 하며 여러가지 나라에 대한 그룹(기준)을 생성하고 그 기준에 맞게 계산을 해서 결과를 보여주게 됩니다.
Germany, Mexico, USA... 같은 여러 나라들에 대한 기준을 만들어달라고 컴퓨터에게 부탁하고 싶었는데, ''로 country를 감싸게되면서 컴퓨터는 Country라는 글자만을 인식해버린거죠.
혹시 설명 부족한 부분 있으면 알려주세요. 감사합니다.