츄빔
2019년 11월 25일 월요일
2019년 11월 13일 수요일
R: dplyr 함수 정복
2019년 11월 12일 화요일
SQL: 열 선택하기(SELECT)
2019년 10월 23일 수요일
SQL: Oracle SQL Developer 쿼리를 활용하여 csv 파일 익스포트하기
평소 SQL 쿼리를 실행한 다음,
질의 결과에서 우클릭 -> 익스포트 -> 익스포트 마법사를 사용하여 csv 파일로 추출하고 있었습니다.
그러다 많은 테이블을 csv 파일로 추출해야 하는 상황이 발생하였고,
일일이 클릭으로 추출하기에는 귀찮았습니다.
다음을 참고하시면 쿼리를 실행하는 과정에서 csv 파일을 추출할 수 있습니다..
쿼리 앞, 뒤로 SPOOL 문을 추가하신 다음,
쿼리의 SELECT 문 다음에 /*csv*/ 주석을 추가하시면 됩니다.
그리고 반드시 띄어쓰기 없이 /*csv*/ 라고 작성하셔야 합니다.
만약 /* csv */ 와 같이 주석 기호 다음으로 띄어쓰기를 하실 경우 csv 형식로 파일이 추출되지 않습니다.
마지막으로 쿼리를 실행하실 때 F9 키가 아닌 F5 키를 사용하셔야 합니다.
질의 결과에서 우클릭 -> 익스포트 -> 익스포트 마법사를 사용하여 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를 조회한다.
'name count가 2 이상' 조건을 사용하기 위해 WHERE 절을 사용할 수 있겠다고 생각하여 아래의 코드를 작성하였습니다.
하지만 아래의 에러가 발생하였습니다. WHERE 절에서는 SELECT 절에서 설정한 열의 별명을 사용할 수 없었습니다.
SQL 실행 중 오류가 발생하였습니다.
Unknown column 'count' in 'where clause'
그래서 별명 count를 사용하지 않고 count(name)을 사용하여 아래의 코드를 작성하였습니다.
하지만 아래의 에러가 발생하였습니다. WHERE 절에서는 count와 같은 그룹핑 함수를 사용할 수 없었습니다.
SQL 실행 중 오류가 발생하였습니다.
Invalid use of group function
위와 같은 과정을 통해 HAVING 절과 WHERE 절의 역할을 이해할 수 있었습니다. 그룹핑 함수를 이용하여 조건을 적용하고 싶다면 HAVING을 사용해야 합니다.
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(열의 이름)을 사용하여 특정 열의 최솟값을 조회할 수 있습니다.
피드 구독하기:
글 (Atom)