[SQL 2-3] Specifying Rows
안녕하세요^^
오늘은 중복된 rows를 제거하는 방법과 rows를 subset하는 방법에 대해 알아보도록 하겠습니다.
지난 시간 다루었던 PAYROLLMASTER 테이블을 이용하여 예제를 통하여 설명하도록 하겠습니다.
Payrollmaster 데이터는 148개의 관측치를 갖고, 6개의 변수를 갖습니다.
이 결과는 PROC CONTENTS를 이용하여 살펴본 변수와 속성 리스트 입니다.
간단히, 상위 10개의 데이터를 먼저 살펴보면 아래와 같습니다.
1. 중복된 ROWS를 제거하는 방법
위의 JobCode 변수를 보시면, TA2, TA3, … 등의 값이 중복되어 나타나는 것을 확인할 수 있습니다.
경우에 따라서는, 중복된 값을 모두 제거한 뒤, 중복되지 않은 값만을 확인하고 싶은 경우가 있습니다.
즉, 위와 같은 결과를 얻고 싶은 경우, 아래와 같은 코드를 작성하면 됩니다.
여기서 나오는 keyword가 distinct입니다. Distinct keyword를 사용하면 중복된 rows를 제거합니다.
Distinct는 SELECT문장이 있는 모든columns에 대해 이루어 집니다.
이 코드의 경우, JobCode에 대해 distinct를 적용하여 중복을 제거하고, 남은 JobCode만을 보여줍니다.
2. rows를 subset하는 방법
마찬가지로, PAYROLLMASTER 테이블 상위 10개의 데이터를 먼저 살펴보면 아래와 같습니다.
이 때, rows를 subset하는 방법으로 Salary변수가 $80,000보다 큰 경우를 생각해 보겠습니다.
즉, 위와 같은 결과를 얻고 싶은 경우, 아래와 같은 코드를 작성하면 됩니다.
이렇게 subset을 얻고 싶으면, where절에 원하는 조건을 입력하면 됩니다.
이 코드의 경우, Salary가 $80,000보다 큰 경우의 값만을 보여줍니다.
WHERE문을 작성할 때 사용할 수 있는 연산자에 대해 알아보도록 하겠습니다.
1. 비교 연산자(comparision operators)를 이용하는 경우
Symbol을 사용하여 작성하는 것과 연상기호(Mnem onic)을 사용하여 작성하는 코드 모두 같은 결과를 보여줍니다.
즉, 위의 예제의 경우 Where Salary > 80000; 를 where Salary ge 80000; 으로 바꿔서 실행하여도 같은 결과를 얻게 됩니다.
2. 논리 연산자(Logical operators)를 이용하는 경우
위의 연산자는 SELECT문장의 WHERE절에서만 사용합니다.
3. 특별한 연산자(Special operators)를 이용하는 경우
IS NULL이나 IS MISSING의 경우 WHERE 변수 = ‘ ‘ 또는 WHERE 변수 = . 으로 대체해서 사용 가능합니다.
다만, IS NULL이나 IS MISSING을 사용하였을 때의 이점은,
변수가 문자를 나타내는지, 수치를 나타내는지 구분하지 않아도 된다는 점입니다.
이상 중복된 rows를 제거하는 방법과 rows를 subset하는 방법에 대해 알아보았습니다.
감사합니다^^
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.