1.
데이터 넣기
2.
SQL 쿼리로 DB 다루기
1.
2.
I. 알고리즘 : 삽입 정렬
1. 강의 노트
1.
개요
강의노트
1.
특징
a.
1번부터 시작해서(0번 아님), 들어가야 할 곳에 insert하는 정렬
b.
어느 위치에 들어가야 하는지 결정하기 때문에 삽입(Insertion) 정렬이라고 한다.
2.
단점 : 뒤로 가는 구간이 있다. 느리다 O(N^2)
3.
장점 : for문 뒤로 가는 것 연습이 가능함.
4.
칠판코딩 : 모르는 상태에서 어떻게 생각을 떠올리는지 보기 위한 목적
2.
과정
i, j, j-1 출력이 해결의 열쇠!
3.
코드 실습
코드 1 : arr[1]과 arr[0] 값 비교하기
코드 2 : i를 파라미터로 넘겨보기
코드 3 : 루프 적용
2. 재귀 구현 : i를 파라미터로 넘겨보는 이유
재귀
•
자기 자신을 호출하는 것.
•
반복문(while) 없이 반복해야 할 때 > 단순한 코드를 위해 사용
도전 문제 2 : 재귀 구현된 코드
3. 삽입 정렬 알아보기
1.
정의 및 특징
•
정렬을 섞인 부분과 섞이지 않은 부분 두 개로 나누고, 섞이지 않은 부분의 값을 선택해 섞인 부분에서 올바른 자리에 놓는 정렬
•
다른 알고리즘이나 추가 메모리를 요구하지 않는, 가장 단순한 알고리즘 종류의 하나
•
작은 데이터셋에 효과적인 방법
•
배열 요소가 정렬되어 있을 때 탐색에 가장 적은 시간 소요 (O(n))
2.
과정을 나타낸 표
3.
최악의 경우
•
배열의 요소가 역순으로 정렬되어 있을 경우
4.
복잡도 정리
•
시간 복잡도 : O(N^2)
•
공간 복잡도 : O(1)
5.
주 사용처
•
적은 데이터셋에서 사용
•
큰 크기의 배열이라도 입력된 배열이 거의 정렬되어 있고, 그 중 일부 요소들만 정렬되어 있지 않을 때도 사용함
추가. 이진 삽입 정렬
II. 실습
추가. writer에서 파일 parsing하기
복습_처음부터 다시 복습 중
III. 쿼리 다루기 연습
1. 기본 쿼리
select
•
db에 질문을 해서 답을 얻는 것
SELECT * FROM seoul_hospital limit 1000;
--전체 데이터 중 1000건만 갖고 오기
SQL
복사
*** 실무에서는 뒤에 limit을 꼭 쓸 것!
SELECT subdivision, NAME FROM `likelion-db`.seoul_hospital limit 1000;
--subdivision, name 컬럼만 불러오기
SQL
복사
•
상세조건 넣기 where
SELECT subdivision, NAME FROM `likelion-db`.seoul_hospital
where subdivision=""
limit 1000;
SQL
복사
•
and 조건과 like
SELECT subdivision, NAME FROM `likelion-db`.seoul_hospital
where subdivision="" and name like "%안과%"
limit 1000;
SQL
복사
•
count 특정 조건인 데이터 개수 세기
SELECT count(name) FROM `likelion-db`.seoul_hospital
where subdivision="" and name like "%안과%"
limit 1000;
SQL
복사
•
update쿼리 by id
UPDATE seoul_hospital
SET subdivision = "이비인후과"
WHERE id - "A1100196"
SQL
복사
•
update쿼리 by condition
UPDATE seoul_hospital
SET subdivision = "이비인후과"
WHERE id - "A1100196"
SQL
복사
•
count 특정 조건인 데이터 개수 세기
SELECT count(name) FROM seoul_hospital
where subdivision = "" and name like "%이비인후과%"
limit 1000;
SQL
복사
•
update 쿼리 by id
UPDATE seoul_hospital
SET subdivision = **"이비인후과"**
WHERE id = "A1100196"
SQL
복사
•
update 쿼리 by condition
UPDATE seoul_hospital
SET subdivision = **"이비인후과"**
where subdivision = "" and name like "%이비인후과%"
SQL
복사
2. 요구사항 정리
1.
병원분류명(category)이 총 몇 가지인가?
-- distinct : 고유값만 나타내는 쿼리
SELECT distinct category FROM seoul_hospital
order by category
limit 1000;
SQL
복사
2.
병원 분류(subdivision)별로 몇 개씩 있는가?
-- group by : 정렬
SELECT subdivision, count(subdivision) as cnt FROM seoul_hospital
group by subdivision
order by cnt desc
limit 1000;
SQL
복사
3.
서울 구별로 병원이 가장 많은 구는?
SELECT district, count(district) as cnt FROM seoul_hospital
group by district
order by cnt DESC;
limit 1000;
SQL
복사
4.
각 구별로 성형외과 개수
SELECT district, subdivision, count(subdivision) as cnt FROM seoul_hospital
where subdivision = “성형외과”
group by district, subdivision
order by district, subdivision, cnt
limit 1000;
SQL
복사
5.
구별로 병원이 몇 개 있는지?
SELECT district, count(district) as cnt FROM `likelion-db`.seoul_hospital
group by district
order by cnt desc;
SQL
복사
추가..
•
SQL로 히트맵 그릴 수 있다
•
SQL로 히트맵 만드는 API도 만들면 좋을 것 같다 ⇒ 프로젝트?
•
엑셀이나 sublimetext같은 건 대용량 데이터를 다루기 적절하지 않다.