2019년 11월 13일 수요일

R: dplyr 함수 정복

1. rename: 열 이름 바꾸기

1
rename(data.frame 이름, new name = old name)
cs

data.frame에서 old name 열의 이름을 new name으로 변경합니다.

만약 dplyr 파이프 연산자를 사용할 경우

1
2
data.frame %>%
    rename(new name = old name)
cs

과 같이 rename에서 data.frame 이름을 생략할 수 있다.

2019년 11월 12일 화요일

SQL: 열 선택하기(SELECT)

1. LIMIT 키워드를 사용하여 출력되는 열의 수를 제한할 수 있다.

1
2
3
SELECT *
FROM people
LIMIT 10;
cs

2. 열에서 유일한 값을 선택하고 싶으면 DISTINCT 키워드를 사용한다.

1
2
SELECT DISTINCT language
FROM films;
cs

2019년 10월 23일 수요일

SQL: Oracle SQL Developer 쿼리를 활용하여 csv 파일 익스포트하기

평소 SQL 쿼리를 실행한 다음,
질의 결과에서 우클릭 -> 익스포트 -> 익스포트 마법사를 사용하여 csv 파일로 추출하고 있었습니다.

그러다 많은 테이블을 csv 파일로 추출해야 하는 상황이 발생하였고,
일일이 클릭으로 추출하기에는 귀찮았습니다.

다음을 참고하시면 쿼리를 실행하는 과정에서 csv 파일을 추출할 수 있습니다..

1
2
3
4
5
6
SPOOL 'csv 파일을 저장할 경로/fileName.csv';
SELECT /*csv*/ *
FROM table;
SPOOL OFF;
cs

쿼리 앞, 뒤로 SPOOL 문을 추가하신 다음,
쿼리의 SELECT 문 다음에 /*csv*/ 주석을 추가하시면 됩니다.
그리고 반드시 띄어쓰기 없이 /*csv*/ 라고 작성하셔야 합니다.
만약 /* csv */ 와 같이 주석 기호 다음으로 띄어쓰기를 하실 경우 csv 형식로 파일이 추출되지 않습니다.

마지막으로 쿼리를 실행하실 때 F9 키가 아닌 F5 키를 사용하셔야 합니다.

2019년 9월 5일 목요일

SQL: JOIN

animal_outs 테이블에는 있지만 animal_ins 테이블에는 없는 데이터를 조회하고 싶은 경우 아래 코드를 실행하면 된다.

1
2
3
4
5
SELECT outs.animal_id, outs.name
FROM animal_ins ins
RIGHT JOIN animal_outs outs ON ins.animal_id = outs.animal_id
WHERE ins.animal_id is null
-- animal_outs에는 있지만 animal_ins에는 없는 데이터를 추출하는 조건
ORDER BY outs.animal_id;
cs

2019년 9월 4일 수요일

SQL: HAVING

아래의 코드는 animal_ins 테이블에서 name 열을 기준으로 name count가 2 이상인 경우에만 그룹핑을 한 다음  name열과 name count를 조회한다.

1
2
3
4
SELECT name, count(name) count
FROM animal_ins
GROUP BY name
HAVING count > 1;
cs

'name count가 2 이상' 조건을 사용하기 위해 WHERE 절을 사용할 수 있겠다고 생각하여 아래의 코드를 작성하였습니다.

1
2
3
4
SELECT name, count(name) count
FROM animal_ins
WHERE count > 1
GROUP BY name;
cs

하지만 아래의 에러가 발생하였습니다. WHERE 절에서는 SELECT 절에서 설정한 열의 별명을 사용할 수 없었습니다.

SQL 실행 중 오류가 발생하였습니다.
Unknown column 'count' in 'where clause'

그래서 별명 count를 사용하지 않고 count(name)을 사용하여 아래의 코드를 작성하였습니다.

1
2
3
4
SELECT name, count(name) count
FROM animal_ins
WHERE count(name) > 1
GROUP BY name;
cs

하지만 아래의 에러가 발생하였습니다. WHERE 절에서는 count와 같은 그룹핑 함수를 사용할 수 없었습니다.

SQL 실행 중 오류가 발생하였습니다.
Invalid use of group function

위와 같은 과정을 통해 HAVING 절과 WHERE 절의 역할을 이해할 수 있었습니다. 그룹핑 함수를 이용하여 조건을 적용하고 싶다면 HAVING을 사용해야 합니다.

2019년 9월 3일 화요일

SQL: 최솟값 구하기

아래의 코드는 datetime의 최솟값을 조회합니다.
1
2
SELECT min(datetime)
FROM animal_ins;
cs

SELECT 절에서 min(열의 이름)을 사용하여 특정 열의 최솟값을 조회할 수 있습니다.