///////
Search

삽입정렬, SQL쿼리_이도현 (수정중)

1.
1.
데이터 넣기
2.
SQL 쿼리로 DB 다루기

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같은 건 대용량 데이터를 다루기 적절하지 않다.